Excel(エクセル)で文字列の一部で検索する、データベースの検索欄を作る方法/ワイルドカード(*、?)の使い方

IT

ワイルドカードとは、ポーカーでいうジョーカーのように「他のあらゆるカードに代替できる」ようなカードのことをいいます。これが転じて不特定の文字列を意味するIT用語となりました。
これを使い、GoogleやYahooの検索欄のようなデータベース用の「検索窓」を作ってみたいと思います。

スポンサーリンク

ワイルドカードの使い方

とりあえず適当なデータベースを作りました。
頭に㈱がついた会社の数を数えてみたいと思います。
通常条件をつけて数を数えるにはCountIf関数を用いますが、=CountIf(A1:A5,”㈱”)では「A1~A5で「㈱」だけが入力されたデータの個数を求める」という意味になるので、数値は0になります。
ところがこの㈱のあとに*(アスタリク)を付けてみると……。
㈱+任意の文字列を条件にカウントされ、㈱から始まる会社の個数が判明しました。
こういう風に使えるのがワイルドカードです。””で囲む必要がある点に注意してください。*は文字数を問わず、何かしらの文字列を意味します。0文字も含みます。
少し式を変えて、B1に入力された文字から始まる会社の数をカウントしてみます。
式としては=CountIf(A1:A5,B1 & “*”)となります。
結果、たとえば㈲を打ちこんでも、その個数をカウントできるようになりました。
さらに検索欄を参照し、文字列の頭、終わりおよび、文中の一文字を参照できるようにします。
式は=CountIf(A1:A5,”*” & B1 & “*”)となります。つまり最初にワイルドカードを付けただけです。
これで「文字列のどこに打ちこんだ文字があっても」検索の対象とすることができるようになりました。
ここまでを要約すると、*康*で検索すれば徳川家も筒井孝も熙帝もひっかかる、という話です。
ワイルドカードには?というのもあり、これは任意の一文字を意味します。?ひとつで一文字、みっつで三文字です。
したがって=CountIf(A1:A5,”㈱???”)には、㈱Cエンタープライズは文字数が多すぎるので含まれません。
あとひとつあるんですが、とりあえず*と?を目的に応じて使い分けられるようになれば、Excelでよく使うワイルドカードはマスターしたと言えます。

ワイルドカードを使った検索窓の作成

では、本題に入ります。社名の一部を窓に打ちこむと、担当者、電話番号、正確な社名が表示されるという機能を実装したいと思います。
データベースの検索と関連項目の表示なので、VlookUp関数にワイルドカードを組み込んでいく形となります。
検索値をワイルドカードで挟み、=”担当者:”&VlookUp(“*”&D$2&”*”,A$2:C$1000,2,FALSE))のようにすれば、社名の一部の文字列で担当者が検索できます。使い回すので$付けて絶対参照にしてます。
*は空白の文字列も含むので、検索窓に何も打ちこんでない場合一番上のデータが表示されます。
何か打つと、ちゃんと関連した項目が表示されます。
関数を下にコピーしていき、最初の文字列と参照列を変更して、電話番号と社名も表示できるようにします。
もし検索窓が空白時は何も表示したくないのであれば、If文を使って=If(D2=””,””,”担当者:”&VlookUp(“*”&D$2&”*”,A$2:C$1000,2,FALSE))のように記述します。
何か打ちこむとちゃんと表示されます。
基本的なデータベースの検索窓としてはこれで十分だと思いますが、一度にひとつしか表示できない仕様なので、検索方法があやふやだったり、同じ社名がふたつあったりすると不具合が出ます。その場合はもう少し改良を加えていく必要があるかと思います。
Excel(エクセル):検索、置換
検索・置換関連の操作、関数、VBAまとめです。 検索・置換操作 検索の基本 検索をするには、ホームタブの右端あたりにある、 検索と選択から検索をクリックします。 検索画面を起動 Ctrl+F またはショート...
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント

モバイルバージョンを終了