0

私は約300001行20列の巨大なスプレッドシートを持っています。最初の列Aは、0.001刻みで0から3までの数字の繰り返しです(3001セル、合計100回の繰り返し)。列Aのエントリ3に対応するROWSを選択し、それらを転置して新しいシートに書き込みます。どうすればよいですか?マクロとVBAの完全な初心者ですが、私はプログラミング(主にC ++)に精通しています。

ありがとう!

4

1 に答える 1

3

このようなことをするのにマクロは本当に必要ありませんが、これもまた、実用的なことよりも楽しみのためにやっていることのように思えます。

範囲「A1:T300001」を列Aで高から低に並べ替えて、上位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

結果を転置したい場合。

于 2012-08-28T17:11:18.967 に答える