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]に感謝します。