Excel - 事前定義された範囲へのデータの選択的転送

問題

私はExcel VBが初めてです。 ワークシート1の一連のデータを複数の条件/基準のセットを満たすことで比較してから、必要のないデータの列を省略しながら、このデータをワークシート2の事前定義された範囲に転送します。

例えば:

ワークシート1には、列Aの値 "si"と列Bの値 "d"および "m"を満たし、列A、C、Eの対応する行をワークシート2にのみ転送するデータが必要な次のデータが含まれます。

 ABCDE si dos xxxxxx si do 2 ddddd pg drx dddd pgマラsdfsdf fj mw 3 ghghgh fj dwf dssdg si mx 1 sfsdfsd si yx 1 hmhjkk 

ワークシート2には、データのコピー先となる定義済みの列/範囲(A、C、およびE)があります。 これがうまくいけば、私は以下に示すように次のような結果が得られるはずです。

 ACE si o xxxxxx si o ddddd si x sfsdfsd 

worksheet2の定義済みの列または範囲は、そこに転送されるデータ量に応じて自動的に拡大および縮小されるはずです。

ワークシート2の出力がアーカイブされている限り、どの方法でも問題ありません。

溶液

シート1のデータの1行目には列見出しがなければなりません。サンプルシートは次のようになります。

 hdng1 hdng2 hdng3 hdng4 hdng5 si dos xxxxxx si do 2 ddddd pg drx dddd pg mra sdfsdf fj mw 3 ghghgh fj dwf dssdg si mx 1 sfsdfsd si yx 1 hmhjkk 

この上でこのマクロを実行し、シート2を見てください

(元のファイルは常に安全な場所に保管してください。

マクロは

 Sub test()ワークシート( "sheet2")Cells.Clearワークシート( "sheet1")。ActiveSheetをアクティブにします。UsedRangeを選択します。Selection.AutoFilterフィールドを選択します。= 1、Criteria1:= "si" Selection.AutoFilterフィールド:= 2、Criteria1 := "= d"、演算子:= xlOr、_条件2:= "= m" ActiveSheet.Cells.SpecialCells(xlCellTypeVisible)。ワークシートを使ったコピー( "Sheet2").Range( "A1")PasteSpecial .Range( " B:B、D:D ")。シフトシフトを削除します。= xlToLeft Application.CutCopyMode = False選択範囲で終了。AutoFilter範囲(" A1 ")。選択終了Sub 

注意

フォーラムでこのヒントを提供してくれた[//ccm.net / ... venkat1926]に感謝します。

前の記事 次の記事

トップのヒント