0

我有一个大约 300001 行和 20 列的巨大电子表格。第一列 A 是从 0 到 3 的数字重复,步长为 0.001(3001 个单元格,总共 100 次重复)。我想挑选出对应于 3 列 A 条目的 ROWS,将它们转置并将它们写入新工作表。我该怎么做呢?宏和 VBA 的总菜鸟,但我熟悉编程(主要是 C++)。

谢谢!

4

1 回答 1

3

你并不真的需要宏来做这样的事情——但话说回来,这看起来更像是你在做的事情,而不是任何实际的事情。

您可以按 A 列从高到低对范围“A1:T300001”进行排序,然后复制并粘贴前一百行。

但是,如果您想要一个执行此操作的宏,这应该适合您:

Sub MacroAutofilterExample()
    ActiveSheet.Range("$A$1:$T$300001").AutoFilter Field:=1, Criteria1:="3.000"

    Range("A1:T300001").Select
    Selection.Copy
    Sheets(2).Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select

    Sheets("Sheet1").Select
    Range("A1").Select
    Selection.AutoFilter
    Range("A1").Select

End Sub

显然,使用选择会导致一些效率损失(因为我记录了其中的一部分),但您可以将其更改为使用设置范围 - 通常这应该会给您一个想法。

编辑:

您将更改该字段:

Transpose:=False

在上面的代码中:

Transpose:=True

如果你想要你的结果转置。

于 2012-08-28T17:11:18.967 回答