我正在尝试将长度各异的多列合并到另一张表上的 1 列中,以便对该列进行 vlookup。
我可以轻松地向下递增通过第一列,但却无法移动到下一列。
以下是我正在使用的代码。我尝试使用单元格标识来增加列号,但收到应用程序定义或对象定义错误 1004。
Sub TestTwo()
Sheets("Transposed").Activate
Dim row As Double
row = 3
'Do Until Sheets("Transposed").Range("B" & row).Value = ""
Do Until Sheets("Transposed").Range(Cells(row, "B")).Value = ""
Sheets("OneList").Range("B" & row - 1).Value = Sheets("Transposed").Range("B" & row).Value
row = row + 1
Loop
End Sub
第一个 do till 行被注释掉了,因为我试图在尝试增加之前让单元格标识符工作。
我究竟做错了什么?
答案1
Range() 查找地址或单元格范围。单独使用 Cells():
Do Until Sheets("Transposed").Cells(row, "B").Value = ""
Range 不喜欢单个 Cells() 引用。
答案2
Scott 完全正确 (+1)。但是,我会用循环来解决这个问题,这和你的方法略有不同For
。这样你就可以更精确,并且在需要扩展时跟踪所有事情
Option Explicit
Sub CombineColumns()
Dim sourceColumns As Long
Dim lastRow As Long
Dim combinedRow As Long
combinedRow = 1
Dim sourceRows As Long
For sourceColumns = 2 To 4 'B, C, D or whatever your range is
lastRow = Cells(Rows.Count, sourceColumns).End(xlUp).Row
For sourceRows = 1 To lastRow
Sheet2.Cells(combinedRow, 1) = Cells(sourceRows, sourceColumns)
combinedRow = combinedRow + 1
Next
Next sourceColumns
End Sub