プチIT化 PR

【Excel】数値フィルターがかからない?!ワイルドカードの使い方

記事内に商品プロモーションを含む場合があります。
当サイトは、アフィリエイト広告を利用しています。

こんにちは、わたあめです。Excelの数値フィルターを使って、フィルタをかけてもかからない時ってないですか?具体的には、数値フィルタでワイルドカードを使うとあるはずのデータが抽出されず0件になってしまいました。

わたあめ
わたあめ
え?!なんで?!条件は正しいはずなのに…。

今回は数値フィルターでワイルドカードが使えないという件について、まとめていきたいと思います。ただ、最後まで読むのが面倒という方もいらっしゃると思うので、先に結論を書いておきますね。

※数値フィルターではワイルドカードは使えません

数値に対してはワイルドカードを使ったフィルターはかけれません。文字列に対してのみ有効となります。詳しい理由や大体案については次章より詳しくまとめていきますね。それでは、行ってみましょう!

事象:数値フィルターでフィルタがかからない

エクセルの表にフィルタ機能を使ってデータを絞り込むことってありますよね。

表の項目名の横にある[▼]ボタンをクリックして、抽出条件を指定するかと思います。今回は、数値(No.)が入力されている列に対して、右クリックで[ユーザ設定フィルター]からワイルドカードを使ったフィルタをかけようとしました。

オートフィルタオプションが開きます。ここで、Noという数値データを持つ列に対して「100」という条件で設定し、[OK]ボタンを押します。結果、「100」に一致したデータが抽出されました。

次に同じ手順で、条件にワイルドカード「?:任意の一文字を表す」を指定して抽出しました。「1?0」と条件をしていするので、100はもちろんのこと100や110、120、130なども抽出されるはずです。が、ワイルドカードを使って条件していするとフィルタがかからず、何も表示されません。

ただ、数値フィルターではなく、「検索」の欄に同じ条件を指定すると、問題なく抽出されます。

この現象の原因は何なのか、どうすればいいのか?の代替案を述べていきますね!

原因:ワイルドカードは文字列に対してのみ有効

原因は、ワイルドカードは文字列を扱うテキストフィルターの時のみ有効だからということでした。Excelの仕様なのでしょうかね。オートフィルターオプションの画面をよく見て見ましょう。そこには、このような表記がありますね。

?を使って、任意の1文字を表すことができます。
*を使って、任意の文字列を表すことができます。

この文をみると文字に対しての説明に思えます。実際、テキストフィルターにのみ有効なようです。

代替案

それでは、今回考えた代替案を書いていきます。

条件で解決する

数値フィルターで使える条件のみを使って、以下の抽出条件になります。

と等しい・と等しくない・より大きい・以上・より小さい・以下

逆に数値フィルター使えない抽出条件は、以下です。(テキストフィルターでは有効)

で始まる・で始まらない・で終わる・で終わらない・を含む・を含まない

この数値フィルターで使える抽出条件を組み合わせて解決する方法です。ANDかORを指定して、条件は2つまで指定可能です。数値の条件で上手く表現できれば良いですね。では、出来ない場合はどうすれば良いか?まだまだありますよ!

文字列に変換する

数値を文字列に変換することによって、文字列のテキストフィルターに有効なワイルドカードを使えるようにする方法です。手順は以下です。

  1. データの範囲を選択
  2. [データ]タブ>[区切り位置]をクリック
  3. 区切り位置指定ウィザード1/3:[次へ]ボタン
  4. 区切り位置指定ウィザード2/3:区切り文字で全てのチェックを外して[次へ]
  5. 区切り位置指定ウィザード3/3:列のデータ形式で[文字列]を選んで[次へ]

これで、数値が文字列に変換されました。文字列になったことで、ワイルドカードを使った抽出が出来るようになります。ですが、注意点もあります。

文字列に変換すると合計(SUM)などの計算が出来なくなります。

他のセルで合計を計算に使っている場合などは、文字列に変換することでエラーとなりますので、気を付けてください。

VBAマクロで解決する

最後に、VBAマクロで解決する方法です。長くなってしまったので、別記事にまとめています!VBAで実現したい方は、以下参考にしてみてくださいね。

ワイルドカードを使って数値フィルターをかけるVBAサンプル
【Excel VBA】ワイルドカードを使って数値フィルターをかける方法こんにちは、わたあめです!皆さん、数値フィルターでワイルドカードが使えないってご存知でした?この前の記事で、数値に対してはワイルドカード...

文字列比較をマクロの中で行い、Array配列でフィルターを書けるという処理を紹介しています。

さいごに

いかがだったでしょうか。数値に対してはワイルドカード使えないのですね。テキストフィルターだと使えるのですね。また新たな気付きでした。それでは、また!