Макрос Excel - вставка только непустых ячеек с одного листа на другой - переполнение стека
способ скопировать диапазон ячеек, но копировать только те ячейки, которые содержат значение.
В моем листе Excel у меня есть данные, запущенные из A1-A18, B пуст и C1-C2. Теперь я хотел бы скопировать все ячейки, которые содержат значение.
With Range("A1")
Range(.Cells(1, 1), .End(xlDown).Cells(50, 3)).Copy
End With
Это скопирует все из A1-C50, но я хочу, чтобы копировались только A1-A18 и C1-C2, если они содержат данные. Но это должно быть сформировано так, чтобы, как только у меня были данные в B или мой диапазон расширялся, они тоже копировались.
'So the range could be 5000 and it only selects the data with a value.
With Range("A1")
Range(.Cells(1, 1), .End(xlDown).Cells(5000, 3)).Copy
End With
Спасибо!
Спасибо Жану, Текущий код:
Sub test()
Dim i As Integer
Sheets("Sheet1").Select
i = 1
With Range("A1")
If .Cells(1, 1).Value = "" Then
Else
Range(.Cells(1, 1), .End(xlDown)).Copy Destination:=Sheets("Sheet2").Range("A" & i)
x = x + 1
End If
End With
Sheets("Sheet1").Select
x = 1
With Range("B1")
' Column B may be empty. If so, xlDown will return cell C65536
' and whole empty column will be copied... prevent this.
If .Cells(1, 1).Value = "" Then
'Nothing in this column.
'Do nothing.
Else
Range(.Cells(1, 1), .End(xlDown)).Copy Destination:=Sheets("Sheet2").Range("B" & i)
x = x + 1
End If
End With
Sheets("Sheet1").Select
x = 1
With Range("C1")
If .Cells(1, 1).Value = "" Then
Else
Range(.Cells(1, 1), .End(xlDown)).Copy Destination:=Sheets("Sheet2").Range("C" & i)
x = x + 1
End If
End With
End Sub
A1 - A5 содержит данные, A6 - бланк, A7 - данные. Он останавливается на A6 и направляется к столбцу B и продолжает в том же духе.