Скопируйте диапазон ячеек и выберите только ячейки с данными

Я ищу способ скопировать диапазон ячеек, но скопировать только те ячейки, которые содержат значение.

В моем листе 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, и продолжается таким же образом.

5
задан Community 9 July 2018 в 18:41
поделиться