Bir hücre aralığını kopyalamak için bir yol arıyorum, ancak yalnızca bir değer içeren hücreleri kopyalamak için.Bir dizi hücre kopyalayın ve yalnızca veri içeren hücreleri seçin
Veri sayfamda A1-A18'den veri var, B boş ve C1-C2. Şimdi bir değer içeren tüm hücreleri kopyalamak istiyorum.
With Range("A1")
Range(.Cells(1, 1), .End(xlDown).Cells(50, 3)).Copy
End With
Bu A1-C50 kadar her şeyi kopyalar, ama ben sadece bu verileri içerir sanki A1-A18 ve C1-C2 görülen çoğaltılamaz istiyorum. Ancak, B'de veya veri aralığım uzandığında, bunların da kopyalanacağı bir şekilde oluşturulması gerekiyor.
'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
Teşekkürler! Jean, Güncel koduna
Teşekkür:
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 verileri içeren, A6 blanc olduğunu A7 verileri içerir. A6'da durur ve B sütununa doğru ilerler ve aynı şekilde devam eder.
Not: İlk kod örnek aralık a1 şeyi kopyalar: C67, A1: C50 ... –
sorularınız cevaplandırıldıktan sonra değişiyor ve bu biraz hayal kırıklığı yaratıyor ... –
Üzgünüm :) ama hepsine cevap verdiniz ve bunun için size teşekkür ediyorum. – CustomX