• ベストアンサー

オートフィルタで未入力(空白)を無視した抽出法

いつもお世話になっております。 現在第一条件から第三条件までの入力フォームを作成し、その条件に基づいたオートフィルタを作成中なのですが、 第二条件以下に未入力の場合のオートフィルタができなくて困っています。 これら未入力(空白)でもきちんと抽出できるオートフィルタを作るにはどうしたら良いですか? 以下に私が作成したものを転記いたしますので、どなたかご教示くださいますよう、お願いいたします。 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

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

acmr
質問者

お礼

で、できました!やった~! Wendy02さん、いつもありがとうございます!! これで検索機能は完成です! ありがとうございました!

その他の回答 (1)

  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.1

空白(Empty)ならば、その行の処理をスキップするようネストしてあげればどうですか?

acmr
質問者

お礼

早速のご回答ありがとうございます。 ほんと素人なもので、そのスキップ処理がわからないんです(泣)。 よろしければご教示ください。

関連するQ&A