都道府県穴埋めゲーム

VBA初心者ですみません

フィルタ内D列にA社、B社、C社・・・と入力してあり、フィルタ外でA社(BA3)、B社(BA4)、C社(BA5)とある場合で、フィルタ外の値(BA3~5)を参照して表示する場合で分からなくて困っています

B社のみを表示する場合は
Range("A1").AutoFilter field:=4, Criteria1:=Range("BA4").Value
これでいけました

ここからが壁になってまして
B社、C社を表示する場合は
Range("A1").AutoFilter field:=4, Criteria1:=Range("BA4:BA5").Value
なんて安易に考えてやってみたところ
B社を表示した直後C社を表示して終わる結果になってしまいました
B社とC社を同時表示してほしいのですが・・・。

そんなのも分からないならセル参照なんてしないでArrayで直接社名指定しろよと怒られそうですが
すでに入力してあるデータ整理の為、何か方法があれば教えて頂けると幸いです。

A 回答 (2件)

こんにちは!



OR条件が三つと判っているのであれば・・・

Sub Sample1()
Dim myAry As Variant
myAry = Array(Range("BA3"), Range("BA4"), Range("BA5"))
Range("A1").AutoFilter field:=4, Criteria1:=myAry, Operator:=xlFilterValues
End Sub

くらいで大丈夫だと思います。

OR条件の数が限定されない場合は

Sub Sample2()
Dim i As Long, myStr As String, myAry As Variant
For i = 3 To 5 '←ここでフィルタ条件数を決める//
myStr = myStr & Cells(i, "BA") & ","
Next i
myAry = Array(Split(Left(myStr, Len(myStr) - 1), ","))
Range("A1").AutoFilter field:=4, Criteria1:=myAry, Operator:=xlFilterValues
End Sub

といった感じで対応できると思います。m(_ _)m
    • good
    • 2
この回答へのお礼

ありがとう

無事解決できました。
とても分かりやすく説明して頂いて助かりました。
ありがとうございました。

お礼日時:2017/01/26 18:32

オートフィルタでやるのなら


Range("$A$1").AutoFilter _
Field:=1, _
Criteria1:=Range("BA4").Value, _
Operator:=xlOr, _
Criteria2:=Range("BA5").Value

でしょうけど フィルタの詳細設定でやった方がいいと思います。
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございます。
2つを超えた場合も知りたかったのです。
丁寧に説明して頂いたのに申し訳ございません。
説明ヘタですみません。

お礼日時:2017/01/26 18:30

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A