Copie um intervalo de células e selecione apenas células com dados
Estou procurando uma maneira de copiar um intervalo de células, mas apenas copiar as células que contêm um valo
Na minha planilha do Excel, tenho dados em execução de A1-A18, B está vazio e C1-C2. Agora eu gostaria de copiar todas as células que contêm um valor.
With Range("A1")
Range(.Cells(1, 1), .End(xlDown).Cells(50, 3)).Copy
End With
Isso copiará tudo do A1-C50, mas eu só quero que o A1-A18 e o C1-C2 sejam copiados como se estes contivessem dados. Mas ele precisa ser formado de maneira que, depois que os dados em B ou meu intervalo se estendem, eles também sejam copiados.
'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
Obrigado
Obrigado a Jean, Código atual:
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 contém dados, A6 é branco, A7 contém dados. Para na A6 e segue para a coluna B e continua da mesma maneir