У меня есть код VBA, который смотрит на последнюю новую строку для других экземпляров записей в столбцах D и E строки на листе. Когда оба экземпляра столбца найдены, макрос копирует данные из столбца F существующей строки в столбец F новой строки.Преобразование «For» в цикл «Для каждого»
Однако макрос является ограничительным, поскольку он заканчивается после нахождения первого экземпляра этого. Я хотел бы, чтобы макрос зацикливался до тех пор, пока не будут найдены все экземпляры.
Я решил, что наилучшим способом было бы преобразование петли For
в цикл For each
, но, похоже, не может заставить попытки кода работать. Любые указатели были бы очень полезны!
Sub test()
Dim N As Long
N = Cells(Rows.Count, "D").End(xlUp).Row
Dim i As Long
d = Cells(N, "D").Value
e = Cells(N, "E").Value
For i = N - 1 To 1 Step -1
dt = Cells(i, "D").Value
et = Cells(i, "E").Value
If d = dt And e = et Then
Cells(N, "F").Value = Cells(i, "F").Value
End If
Next i
End Sub
Что вы можете сделать здесь, это лучшие имена переменных, они были многозначными в течение нескольких десятков лет. – Orbling
В настоящее время это выполняется через все строки снизу вверх, но постоянно заменяет ячейку 'F' в последней строке, содержащей данные в' D', с любыми соответствующими данными строки. Где бы вы поместили следующую строку в соответствие с содержимым 'F'? – Orbling
Последующие совпадения строк помещают существующее F-содержимое в самую новую повторяющуюся строку. Таким образом, в этой таблице будет 1000 строк - для каждой строки, которая является дубликатом (в частности, с использованием столбцов D и E в качестве условий для того, считается ли она дубликатом), она должна скопировать столбец F существующей строки в столбец F новая повторяющаяся строка. Надеюсь, это имеет смысл! – Byate