プロが教えるわが家の防犯対策術!

VBA初心者です。
仕事の残業を少しでも減らしたく
最近勉強を始めたのですが
フィルターを一気にかけるコードが作りたく、、
可能であれば調べ方やヒントだけでも教えて下さる優しい方を探しております。


シート(フィルター)のA2から下に
複数IDを入力しマクロを実行したら
シート(一覧)にあるデータの該当ID一覧がでて
そこから比較、更新、コピーなどがしたい、、、
でもまずそのフィルターをかけれなくて困ってます。

「VBA初心者です。 仕事の残業を少しでも」の質問画像

質問者からの補足コメント

  • fujillinさん、tagletさん
    ご回答ありがとうございます。

    そうですよね。。。
    申し訳ございません、こういった場に書き込みするのも初めてでしたので(- -)(_ _)

    下記、マクロの記録を撮ったものなのですが
    こちらの Criteria1:=Array( _
    "A001", "A006", "A008"),の部分を
    別のシートのA2からA10までに入っている値にしたいって感じなのです。



    (マクロの記憶)
    ' Macro1 Macro
    '

    '
    ActiveSheet.Range("$A$1:$E$21").AutoFilter Field:=1, Criteria1:=Array( _
    "A001", "A006", "A008"), Operator:=xlFilterValues
    End Sub

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/08/15 23:05

A 回答 (4件)

こちらの「3つ以上の条件を指定する」が参考になると思います。


http://officetanaka.net/excel/vba/tips/tips190.htm
    • good
    • 1
この回答へのお礼

参考になりました!ありがとうございます!

お礼日時:2022/08/16 00:12

No1です。



>こちらの Criteria1:=Array( _
>"A001", "A006", "A008"),の部分を
>別のシートのA2からA10までに入っている値にしたいって感じなのです。
No1にも書きましたが、可変にしたい部分を変数化して、必要な値を代入すれば良いだけです。

そのまま、単純に変数化するなら・・
Dim a, b, c ・・・
a = 別シートのA2の値
b = 別シートのA3の値
c = 別シートのA4の値
  ・・・
Worksheets("対象シート").Range("A1:E21").AutoFilter Field:=1, _
Criteria1:=Array(a, b, c ・・・), Operator:=xlFilterValues

とでもすればよいですが、数が多いので、配列を利用するなら、

Dim s(1 To 9), i As Long
For i = 1 To 9
s(i) = Worksheets("別シート").Range("G1").Offset(i).Value
Next i
Worksheets("対象シート").Range("A1:E21").AutoFilter Field:=1, _
Criteria1:=s, Operator:=xlFilterValues

としておく方がコンパクトにできると思います。
    • good
    • 1
この回答へのお礼

とても親切に教えてくださりありがとうございました!

お礼日時:2022/08/16 00:12

fujillinさんのおっしゃる通り、読むことが出来る「イメージ図」を提示し、「やりたいこと」を回答者にわかりやすく伝えてもらえないと、答えようがありません。

この回答への補足あり
    • good
    • 1

こんばんは



画像は見えないし、なさりたいことの内容もよくわからないので・・

>VBA初心者です。
どの程度の「初心者」なのかもわかりませんが、ある程度の構文は理解できているのなら、「マクロの記録」でなさりたいフィルター操作を手操作で実行して記録をとってみてください。
大まかな手順や使用するメソッドがわかると思いますし、その中で可変にしたい内容を変数などにして、処理で求めるように変更すれば良いです。

コツとしては、「マクロの記録」をそのまま利用しようとはせずに、あくまでもメソッドの参考として利用することだと思います。
手作業の記録だと頻出する「Select」や「Selection」、「Activate」などは用いずとも、大抵のマクロは作成可能ですので、そのような作り方をなさることをお勧めいたします。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!