我有一些代码需要在数组或类似的代码中缩短,因为它需要很长时间才能运行。
我有一张复印纸和粘贴纸。
将表复制到复印纸上,并且宏读取每一列的标题并将其粘贴到粘贴纸上的正确位置。因此,它基本上可以重组数据,使其可以与其他表对齐。
我有20列可以进行匹配,复制和粘贴以从复印纸粘贴到纸上。
ABC = WorksheetFunction.Match("ABC", Rows("1:1"), 0)
DEF = WorksheetFunction.Match("DEF", Rows("1:1"), 0)... ETC.
Sheets("COPY").Columns(ABC).copy Destination:=Sheets("PASTE").Range("C1")
Sheets("COPY").Columns(DEF).copy Destination:=Sheets("PASTE").Range("C2")
答案 0 :(得分:0)
对列标题标签和目标位置使用变体数组。
dim h as long, hdrs as variant, hnum as variant
hdrs = array("ABC", "C1", "DEF", "C2")
with workSheets("COPY")
for h=lbound(hdrs) to ubound(hdrs) step 2
hnum = application.Match(hdrs(h), .Rows("1:1"), 0)
if not iserror(hnum) then
.Columns(hnum).copy Destination:=workSheets("PASTE").Range(hdrs(h+1))
end if
next h
end with
很显然,您不会覆盖先前的粘贴操作,但这将遵循您的原始示例代码。小心复制整列;您将无法粘贴到不是另一整列的任何目标位置(例如,将C2作为目标位置比整列少一个单元格)。
如果目标是顺序列,则可以将一个目标偏移 h 列。
我通过将application.match返回一个变体对不匹配项进行了一些错误控制。