Я заранее извинюсь за большой объем этого вопроса и любую неопределенность, которую я мог бы создать. Я хотел бы создать макрос, который идет вниз по таблице и копировать значение ячейки, если определенное условие выполняется в другом столбце в этой строке для таблицы на другом листе.Excel VBA: копировать значение ячейки в таблице в таблицу на другом листе с условием
В принципе, если Условие равно X в столбце C в таблице A, то скопируйте номер из столбца B в таблице A в столбец B в таблице B. Есть 2k + строки. Столбец C в таблице A всегда пуст или равен X, а столбец B в таблице A никогда не будет пустым до конца списка. Столбец B в таблице B пуст, и количество строк будет определяться количеством строк, скопированных на него из таблицы A.
Я уверен, что для этого потребуется цикл, но, будучи новичком в VBA, я не знаю, какой тип цикла мне нужен и как должна выглядеть логика цикла. Я подозреваю, что Do Until будет проще, поскольку в таблице A нет пробелов до конца списка. До сих пор я догадываюсь:
Dim wsPAPS As Range
Dim wsPAVA As Range
Dim wsVNPN As Range
Dim wkATTR As Workbook
Set wkATTR = Workbooks("PARCEL_ATTR_MACRO-TEST.xlsm")
Set wsPAPS = Sheets("PARCEL_ATTR_BASE").Range("PARCELSTAT")
Set wsPAVA = Sheets("PARCEL_ATTR_BASE").Range("APO_VA_Properties_Vacant_Abandoned")
Set wsVNPN = Sheets("VA_NAME").Range("L1_PARCEL_NBR")
Do
If wsPAVA = "Vacant/Abandoned" Then
wsVNPN = wsPAPS
End IF
Loop Until wsPAPS = ""
Примечание: этот код на самом деле не работает; Мне говорят, что у меня есть Loop без Do, не знаю почему.
Я был бы невероятно благодарен за любую помощь, предлагаемую на этом. Спасибо всем!
UPDATE Целью использования переменных диапазона является попытка упростить ссылку на конкретные столбцы, но для них я получаю определенную или определяемую объектами ошибку.
Вы должны использовать Do While (условие), то в конце говорят "Loop" http://www.excelfunctions.net/VBA-Loops.html – peege