Cells(1, 1)
это просто RANGE.("A1")
, вы работаете только с этой ячейкой в вашем коде. Вам понадобится Cells(1, iCol)
, чтобы учесть, в каком столбце вы находитесь во время вашего l oop.
Вам также может понадобиться вложенная l oop, поскольку вы также просматриваете строки. Основа c вложенного l oop выглядит следующим образом. Обратите внимание, что Cells(1,1)
заменяется на i и j, представляющие, в какой строке и в каком столбце мы находимся. Возможно, это не самый быстрый способ достичь желаемых результатов, но, похоже, это то, с чем вы просите помощи. Вам также нужно будет указать последнюю строку (с + 1 в конце, чтобы получить следующую пустую ячейку) в вашем Sheet2 для того, когда вы вставляете данные. Вы бы поместили это прямо под тем местом, где l oop начинает проходить по строкам Таким образом, последняя строка вашего листа2 пересчитывается при каждом перемещении данных на этот лист. Я не собираюсь переписывать ваш код, поскольку вы заявили, что он неполон, но вот пример, который должен вам помочь.
For j = 5 To lastcolumn
For i = 5 To lastrow
Dim lastrow2 As Long
lastrow2 = Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1
If Worksheets(2).Cells(i, j).Value <> 0 Then
Worksheets(1).Range("C" & lastrow2).Value = Worksheets(2).Cells(i, j).Value
Worksheets(1).Range("B" & lastrow2).Value = Worksheets(2).Cells(2, j).Value
End If
Next i
Next j
Чтобы найти свою последнюю строку:
dim lastrow as long
lastrow = Range("A" & rows.count).End(xlup).Row ' or whatever column contains the data
Чтобы найти последний столбец
Dim lastcolumn As Long
lastcolumn = Worksheets(2).Cells(2, Columns.Count).End(xlToLeft).Column