- ベストアンサー
オートフィルタで未入力(空白)を無視した抽出法
いつもお世話になっております。 現在第一条件から第三条件までの入力フォームを作成し、その条件に基づいたオートフィルタを作成中なのですが、 第二条件以下に未入力の場合のオートフィルタができなくて困っています。 これら未入力(空白)でもきちんと抽出できるオートフィルタを作るにはどうしたら良いですか? 以下に私が作成したものを転記いたしますので、どなたかご教示くださいますよう、お願いいたします。 With Worksheets("業種別検索") myCriteria1 = .Range("a2").Value myCriteria2 = .Range("b2").Value myCriteria3 = .Range("c2").Value End With With Worksheets("元データ") If Worksheets("元データ").AutoFilterMode = False Then Range("A6:z6").Select Selection.AutoFilter Else Sheets("元データ").Select Selection.AutoFilter Range("A6:z6").Select Selection.AutoFilter End If .Range("A1").CurrentRegion.AutoFilter 17, myCriteria1, xlAnd .Range("A1").CurrentRegion.AutoFilter 18, myCriteria2, xlAnd .Range("A1").CurrentRegion.AutoFilter 19, myCriteria3, xlAnd End With
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 こんな考え方でいかがでしょうか? 空白値の場合は、オートフィルタの選択を無視するという方法です。考え方としては、ものすごく単純なんですが、「Criteriaありき」という方法ですと、どうしても、オートフィルタがうまく行かないようですね。 Range("A6:z6").Selectということは、6行目から、という意味だと思います。まだ、なんとか私は、おやりになっていることに付いていっていると思います。 なお、これで、今回のスタイルとしてのマクロは、第三段目になると思います。一応、そういうわけで、プロシージャ名に気を使いました。 '--------------------------------------- Sub オートフィルタ複合選択3() Dim myCriteria1 As String Dim myCriteria2 As String Dim myCriteria3 As String With Worksheets("業種別検索") myCriteria1 = Trim(.Range("a2").Value) myCriteria2 = Trim(.Range("b2").Value) myCriteria3 = Trim(.Range("c2").Value) End With With Worksheets("元データ") .Select If .AutoFilterMode Then '.ShowAllData 'すべて出す .AutoFilterMode = False 'フィルタモード解除 End If With .Range("A6", .Range("A65536").End(xlUp).Offset(, 25)) If myCriteria1 <> "" Then .AutoFilter 17, myCriteria1, xlAnd End If If myCriteria2 <> "" Then .AutoFilter 18, myCriteria2, xlAnd End If If myCriteria3 <> "" Then .AutoFilter 19, myCriteria3, xlAnd End If End With End With End Sub
その他の回答 (1)
- jo-zen
- ベストアンサー率42% (848/1995)
空白(Empty)ならば、その行の処理をスキップするようネストしてあげればどうですか?
お礼
早速のご回答ありがとうございます。 ほんと素人なもので、そのスキップ処理がわからないんです(泣)。 よろしければご教示ください。
お礼
で、できました!やった~! Wendy02さん、いつもありがとうございます!! これで検索機能は完成です! ありがとうございました!