Excel VBA 递增列

Excel VBA 递增列

我正在尝试将长度各异的多列合并到另一张表上的 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

相关内容