Arrays 使用数组重新组织数据

Arrays 使用数组重新组织数据,arrays,excel,vba,worksheet-function,Arrays,Excel,Vba,Worksheet Function,我需要在数组或类似的东西中缩短代码,因为它需要很长时间才能运行 我有一张复印纸和粘贴纸 将表格复制到复制工作表中,宏将读取每列的标题并将其粘贴到粘贴工作表的正确位置。因此,它基本上会重新组织数据,以便与其他表对齐 我有20列匹配,复制和粘贴到粘贴表从复制表 ABC = WorksheetFunction.Match("ABC", Rows("1:1"), 0) DEF = WorksheetFunction.Match("DEF", Rows("1:1"), 0)... ETC. Sheets(

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

我有一张复印纸和粘贴纸

将表格复制到复制工作表中,宏将读取每列的标题并将其粘贴到粘贴工作表的正确位置。因此,它基本上会重新组织数据,以便与其他表对齐

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

对列标题标签和目标使用变量数组

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

在这里发帖时请不要大喊大叫。我不知道caps的意思是大喊大叫,很高兴知道。谢谢!我输入了数据,它工作得很好!不过我还有一个问题,(因为我在学习)。。由于我的数组每周都在更改,所以不必在vba上重新输入,数组是否可以引用包含数据的工作表?在本例中,我有一个名为“修正”的表,其中包含我在数组中输入的列表。它能用这个范围/列做同样的事情吗?我的列表在A列的“修改”页上。只需将工作表范围值读入一个数组,可能使用转置。如果你在尝试时遇到困难,Sunds会成为一个新问题的好话题。