- ベストアンサー
オートフィルターから抽出、貼り付けを自動化したい
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
画像のようにSheet2を作成しておき Sheet2でフィルタオプションの設定で記録すると Sub Macro1() Sheets("Sheet1").Columns("A:H").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("C1"), Unique:=False End Sub 上記の指定範囲の説明 リスト範囲 Sheets("Sheet1").Columns("A:H") 検索条件範囲 =Range("A1:A2") 抽出条件範囲 =Range("C1") 繰り返す場合もう一工夫必要な気がしますが、 最終的にどのように抽出したいかわかりませんので ここまでとしています。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
例データ A2::G9 氏名 月 火 水 木 金 土 a ○ ○ b ○ ○ ○ ○ c ○ ○ d ○ ○ ○ ○ e ○ f ○ ○ g ○ ○ ーー I3に○ I2:I3が条件セルです ーー コード 「フィルタオプションの設定」のマクロの記録を骨子にして、修正しています。 Sub Macro1() For i = 2 To 7 Cells(21, i) = "氏名" Range(Cells(22, i), Cells(30, i)).Clear Range("i2") = Cells(2, i) Range("A2:G10").Select Range("a2:G10").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "I2:I3"), CopyToRange:=Range(Cells(21, i), Cells(30, i)), Unique:=False Next i End Sub ーーー 結果 B21:G26に 氏名 氏名 氏名 氏名 氏名 氏名 a b a b c b c d b d f d g d g f e ーーー 抽出するセル範囲を指定しているので、上記ではコピー貼り付けは必要ない。 ーー ご質問者の要求に合うように変える力がなければ、上記回答は無視してください。
お礼
お礼のご連絡が遅れて申し訳ありません。 チャレンジしてみます。 大変ありがとうございました
- merlionXX
- ベストアンサー率48% (1930/4007)
merlionXXです。 > どこにどのように活用すればよいのですか 手順 1.エクセルの画面で、AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。 2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。 '********これより下********** Sub test() Sheets("Sheet1").Columns("A:A").Copy Sheets("Sheet2").Columns("A:A") End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります。 4.オートフィルターで選択します。 5.Alt+F8キーで出てきたマクロ名(test)を選択して実行します。
お礼
手間をとらせまして申し訳ありません。 早速やってみます。 年末のお忙しい中有難うございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
対象となる方々の名前(A列)を転記するのですか? ならば、表があるのがSheet1で転記先がSheet2だとしたら Sheets("Sheet1").Columns("A:A").Copy Sheets("Sheet2").Columns("A:A") ではないでしょうか?
補足
はい、その通りです。 たとえば月曜日に出席する者だけ集めてSheet2に転記(貼り付け)をしたいのです。 他の曜日もそうです。 すいません。教えてもらった数式。 どこにどのように活用すればよいのですか、何分マクロは素人なのでもし宜しければ、詳しく教えていただければ、助かります。
お礼
早速チャレンジします。 年末のお忙しい中ありがとうございます。