I have a excel file with more than 80000 lines/values in a column. After random lines/values a blank cell is present. I want to copy all values above every blank cell to a new column in another workbook. I have tried the following,
Sub main()
Dim wba As Workbook
Dim wbb As Workbook
Set wba = Workbooks("test.xlsx")
Set wbb = Workbooks("test1.xlsx")
With wba.Worksheets("Sheet1")
.Range("BA2", .Range("A2").End(xlDown)).Copy
End With
wbb.Worksheets("Sheet1").Range("A2").PasteSpecial xlPasteValues
End Sub
But this is copying till the occurrence of first blank cell only. I want to run it in a loop till the end of column so that if blank cell appears for say 100 times then I will have 100 columns in test1.xlsx.
The sample data is:
A |
---|
10 |
20 |
30 |
4045 |
85 |
98 |
87 |
54 |
65 |
9 |
110 |
335 |
995 |
664 |
256 |
22 |
44 |
55 |
66 |
77 |
The intended output in another workbook is :
A | B | C | D | E |
---|---|---|---|---|
10 | 98 | 9 | 22 | 55 |
20 | 87 | 110 | 44 | 66 |
30 | 54 | 335 | 77 | |
4045 | 65 | 995 | ||
85 | 664 | |||
256 |
CodePudding user response:
Untested, but give this a try. Areas
captures each block of cells separated by blanks. If your cells contain formulas this code will need to use xlCellTypeFormulas
instead of xlCellTypeConstants
.
Sub main()
Dim wba As Workbook
Dim wbb As Workbook
Dim r As Range, c As Long
Set wba = Workbooks("test.xlsx")
Set wbb = Workbooks("test1.xlsx")
With wba.Worksheets("Sheet1")
For Each r In .Columns(1).SpecialCells(xlCellTypeConstants).Areas
c = c 1
r.Copy
wbb.Worksheets("Sheet1").Cells(2, c).PasteSpecial xlPasteValues
Next r
End With
End Sub