2012-08-28 84 views
0

我有一個大約300001行和20列的龐大電子表格。第一列A是以0.001爲步長從0到3的數字的重複(3001個單元,總共100次重複)。我想挑出對應於3列A條目的ROWS,將它們轉置並將它們寫入新的工作表。我該怎麼做呢?在宏和VBA總noob但我熟悉編程(主要是C++)。用於複製特定行的Excel宏

謝謝!

回答

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 

,如果你想你的結果換位。

+0

自動文件自動排序整行/我的意思是如果我有兩行(2.99,5,6)和(3.00,1,2)我會看到第二組數字完全向上移動或將看到列按(3.00,5,6)和(2.99,1,2)排序。我想保留這組數字的順序。 –

+1

自動過濾與排序不同。它所做的只是過濾,它不會重新組織(實際上它所做的只是隱藏不符合條件的行)。因此,上述代碼中的命令Selection.AutoFilter會將您的數據恢復到正常狀態(到其初始狀態 - 它將取消隱藏所有先前隱藏的行)。所以你最初的訂購不會丟失。但無論如何,如果您的初始排序很重要,我會建議您有一個從1到300001的列 - 所以您可以對其進行排序並自由操作,而不必擔心會丟失對您而言很重要的任何排序。 – Stepan1010