0
我有一个大约300001行和20列的庞大电子表格。第一列A是以0.001为步长从0到3的数字的重复(3001个单元,总共100次重复)。我想挑出对应于3列A条目的ROWS,将它们转置并将它们写入新的工作表。我该怎么做呢?在宏和VBA总noob但我熟悉编程(主要是C++)。用于复制特定行的Excel宏
谢谢!
我有一个大约300001行和20列的庞大电子表格。第一列A是以0.001为步长从0到3的数字的重复(3001个单元,总共100次重复)。我想挑出对应于3列A条目的ROWS,将它们转置并将它们写入新的工作表。我该怎么做呢?在宏和VBA总noob但我熟悉编程(主要是C++)。用于复制特定行的Excel宏
谢谢!
你并不是真的需要宏来做这样的事情 - 但是,这又似乎更像是你为了娱乐而做的事情,而不是实际的事情。
您可以将列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
,如果你想你的结果换位。
自动文件自动排序整行/我的意思是如果我有两行(2.99,5,6)和(3.00,1,2)我会看到第二组数字完全向上移动或将看到列按(3.00,5,6)和(2.99,1,2)排序。我想保留这组数字的顺序。 –
自动过滤与排序不同。它所做的只是过滤,它不会重新组织(实际上它所做的只是隐藏不符合条件的行)。因此,上述代码中的命令Selection.AutoFilter会将您的数据恢复到正常状态(到其初始状态 - 它将取消隐藏所有先前隐藏的行)。所以你最初的订购不会丢失。但无论如何,如果您的初始排序很重要,我会建议您有一个从1到300001的列 - 所以您可以对其进行排序并自由操作,而不必担心会丢失对您而言很重要的任何排序。 – Stepan1010