excel - 遍历 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).PasteSpecial
and 而不是 Range Columns(lastColumn)
,但似乎没有任何效果。
wkbDest.Sheets(sheetName).Range("A1").PasteSpecial xlPasteValues
.Close savechanges:=True
End With
strExtension = Dir()
Loop
解决方案
将此添加到您的代码中,替换粘贴行。
' 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
推荐阅读
- python - 中途拆分 PDF 页面并重新组合?
- html - 为什么我的 css 没有编辑我的 html 按钮高度?
- arrays - 带有集合数组的MongoDB 2集合
- elixir - 预加载和订购 has_many 时的不良行为:通过关联
- sql - 时间字段案例说明
- java - 解密未返回正确的明文
- java - Protobuf 生成的类中的 newBuilder() 是否会创建一个新的 Java 对象?
- arrays - 如何找到两个数组具有相同数字的位置?
- excel - Excel 宏:需要将数字转换为没有分隔符和数字四舍五入的文本
- bash - 在 UBUNTU 上编码 BASH curl 的 URL