Excel宏用于复制特定行

时间:2012-08-28 16:22:08

标签: excel vba

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

谢谢!

1 个答案:

答案 0 :(得分:3)

你真的不需要宏来做这样的事情 - 但是这似乎更像是你为了好玩而做的事情而不是任何实际的事情。

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

但是如果你想要一个宏来做这个,这应该对你有用:

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

如果您希望转换结果。