- ベストアンサー
EXCEL2003で三つ以上の条件でフィルタ
EXCEL2003でオートフィルタを使用すると、一つの列に対し、二つの条件までしか設定できません。 三つ以上、具体的には、「A」を含む 又は 「B」を含む 又は 「C」を含む…といったようなフィルター設定をしたいのですが、 これをVBAなどでできませんでしょうか。 2007なら可能なのは分かっているのですが、会社のPCの為2003しか使えません。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
データ→フィルタ→フィルタのオプション設定をお試し下さい。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルのフィルタをしきりに出しているが、、 それなら、オートフィルタやフィルタオプションの設定のマクロの記録を修正とかになるでしょうが。 ーー VBAでやるなら、他の方法もあるよ。 フィルタのように操作とは手順が違うが。 下記での sd dfg we をどう取り込むかの問題があるが。 Sub test01() d = Range("a65536").End(xlUp).Row k = 2 For i = 1 To d p = InStr(Cells(i, "A"), "sd") If p <> 0 Then Cells(k, "F") = Cells(i, "A") k = k + 1 GoTo ext End If p = InStr(Cells(i, "A"), "dfg") If p <> 0 Then Cells(k, "F") = Cells(i, "A") k = k + 1 GoTo ext End If p = InStr(Cells(i, "A"), "we") If p <> 0 Then Cells(k, "F") = Cells(i, "A") k = k + 1 GoTo ext ext: End If Next i End Sub Findメソッドを使う、ワイルドカードを使うなどの方法もあるが 原始的な方法もある。 例データ asdf wersddf fgwaer wsdfgh qqwrty 下記を含む行を抜き出し sd dfg we 上記を両方該当するとき2回書き出しを避けるのがポイント。 結果 asdf wersddf wsdfgh
お礼
ありがとうございます。ただ私には高度すぎてよく分かりません。 フィルタオプション使用した方が、コンパクトにまとめられそうですし、そちらを採用したいと思います。
- mshr1962
- ベストアンサー率39% (7417/18945)
項目名 ="=*A*" ="=*B*" ="=*C*" という条件を表とは別に設定 「データ」「フィルタ」「オートフィルタ」で リストの範囲の元の表の範囲 条件範囲に上記の項目名と条件の範囲 でOKしてみてください。
補足
すみません、意味がよく分かりません。 「データ」→「フィルタ」→「オートフィルタ」をしても、フィルターモードになるだけで、 ・リストの範囲の元の表の範囲 ・条件範囲に上記の項目名と条件の範囲 を指定するボックスは出てきません。 理屈的にはフィルターオプションと同じように感じられますが、いかがでしょうか。
- hana-hana3
- ベストアンサー率31% (4940/15541)
VBAでもエクセルの機能に無いことはできません。
補足
デフォルトに無い機能でもVBAならできることもあるでしょう。 例えばユーザー定義関数のように。
お礼
フィルターオプションを使用することはなかったのですが、確かに希望通りのことを実行できました。これをマクロにも組み込めるようなので、目的の処理ができるようになりました。 ありがとうございました。