首页 > 解决方案 > 遍历 Excel 中的列

问题描述

我编写了一个简单的 VBA 脚本,可以打开给定文件夹中的所有 .xls 文件,并复制 A 列。我希望将该信息粘贴到我的工作簿的唯一列中。我似乎不能很容易地遍历列,所以在下面的循环中,我只是将所有内容粘贴到同一列中。我只是不知道如何更新我想粘贴到哪一列。如果我在行上迭代它会很简单,它会是 Range("A"&LastRow),但列似乎更棘手。在下面的循环中,所有内容都粘贴到目标工作簿的 A 列(变量 wkbDest)。

Dim wkbDest As Workbook
Dim wkbSource As Workbook 'Source workbooks
Set wkbDest = ThisWorkbook
Const strPath As String = "C:\SecretPath\"
Const sheetName As String = "MacroResults"
Const xlsPattern As String = "*.xls"
ChDir strPath
strExtension = Dir(xlsPattern)
Dim lastColumn As Long 'variable that will be the counter to iterate over the columns
lastColumn = 0
wkbDest.Sheets(sheetName).Cells.Clear
wkbDest.Sheets(sheetName).Range("A1").Value = "Extraction Results"
Do While strExtension <> ""
    Set wkbSource = Workbooks.Open(strPath & strExtension)
    With wkbSource
    lastColumn = lastColumn + 1
    wkbSource.Sheets("Test_1").Columns("A:A").Copy

我试过wkbDest.Sheets(sheetName).Range("A1").OffSet(0,lastColumn).PasteSpecialand 而不是 Range Columns(lastColumn),但似乎没有任何效果。

    wkbDest.Sheets(sheetName).Range("A1").PasteSpecial xlPasteValues
    .Close savechanges:=True
    End With
    strExtension = Dir()
Loop

标签: excelvba

解决方案


将此添加到您的代码中,替换粘贴行。

' convert the lastColumn into its letter, and then use it
Dim vArr as Variant, Col_Letter as string
vArr = Split(Cells(1, lastColumn ).Address(True, False), "$")
Col_Letter = vArr(0)

wkbDest.Sheets(sheetName).Range(Col_Letter & "1").PasteSpecial xlPasteValues

推荐阅读