Проверьте, существует ли значение в столбце, если нет, добавьте новую строку после последней - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь сравнить значения в столбце «А» на двух листах - исходном и целевом.

  • Если значения совпадают - перезаписать всю строку в целевом
  • Если значение не существует, добавьте новую строку после последней строки на листе назначения со строкой данных из исходного листа, соответствующей значению, которое не было найдено.

Код работает для перезаписи строки.

Я застрял с добавлением новой строки. Я попытался поместить Else в l oop, и он добавляет новую строку, но когда я снова запускаю макрос, он добавляет эту же строку снова после последней строки вместо перезаписи.

Dim source, desination As Worksheet
Dim lastrow, lastrow2 As Long
Set source = Sheets("Sheet2")
Set destination = Sheets("Sheet1")
lastrow = source.Cells(Rows.Count, 1).End(xlUp).Row
lastrow2 = destination.Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To lastrow
    For i = 2 To lastrow2
        If Trim(source.Cells(j, 1).Value2) = vbNullString Then Exit For
        If destination.Cells(i, 1).Value = source.Cells(j, 1).Value Then
            destination.Range("A" & i, "O" & i).Value = source.Range("A" & j, "O" & j).Value
        Else
            destination.Range("A" & lastrow2 + 1, "O" & lastrow2 + 1).Value = source.Range("A" &  j,"O" & j).Value
        End If
    Next
Next

1 Ответ

0 голосов
/ 26 января 2020

Определите перед l oop новую переменную Dim newRow as long и установите ее на newRow = lastrow2 +1 Тогда что-то подобное должно работать в else ветви

   destination.Range("A" & newRow , "O" & newRow).Value = source.Range("A" &  j,"O" & j).Value
   newRow = newRow +1 

newRow должно отслеживать последней строки, написанной вашим сценарием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...