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

questionAnswers(3)

yourAnswerToTheQuestion