使用数组重新组织数据

Reorganize data using an array

我有代码需要在数组或类似的东西中缩短,因为它需要很长时间才能 运行。

我有一个副本 sheet 并粘贴 sheet。

A table 被复制到副本 sheet 并且宏读取每列的标题并将其粘贴到粘贴 sheet 的正确位置。所以它基本上重组了数据,使其可以与其他 tables 对齐。

我有 20 列匹配、复制和粘贴以从副本 sheet 粘贴 sheet。

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")

为第 header 列标签和目的地使用变体数组。

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 返回到变体来对不匹配进行一些错误控制。