Introduction
Ver. all 2013 2016 2019 2021 365
VLOOKUPの[検索値]の場所を部分一致させる方法を紹介します。使用するのはワイルドカード。使用する際にちょっと工夫が必要です。
ここでは、VLOOKUP関数の詳しい説明は省略します。引数の指定などの説明が必要な方は下のリンク先をご覧ください。
記号を使うにゃ
ワイルドカードとは
ワイルドカードとは、類似した情報を持つデータを検索する場合などに使用する、テキストや文字をあらわすものです。
- 「?」・・・任意の1文字を表す
- 「*」・・・任意の複数文字列を表す
※他にも種類があるのですがあまり使用しないため割愛します。
例えば1文字目が「山田」や「山王寺」など「山」で始まる名前を検索したい場合は、「山*」と指定します。
「山」で始まる2文字の名前だけを検索したい場合は「山?」と指定します。
この「ワイルドカード」は関数の中だけではなく、フィルターオプション機能や検索機能でも使用できる便利なものです。
Wordなど他のソフトウェアでも使用できる場面があるので覚えておくのがお勧めです。
VLOOKUP関数でワイルドカードを使う方法
では、VLOOKUP関数でワイルドカードを使ってみます。
下の表をご覧ください。
「注文データ」シートの「運搬注意」のセルに、
隣りにある「参照表」シートのデータを引っ張ってきたいと思います。
それぞれの表にある「コード」の場所を一致させます。
しかし、一方が「A100」「A200」のように入力されているのに、対し「参照表」の方は「A100-10」「A200-15」のように、より細かいデータが入力されてしまっています。
そうなると、データが一致しないため一工夫ひつようになります。
今回の場合は、「A100で始まるデータ」「A200で始まるデータ」のように指定すれば問題なくVLOOKUP関数が使用できます。
では、今回のVLOOKUP関数の引数画面を順番に設定していきます。
VLOOKUP関数・・・他の表から対応データを探し出し、一致した行中のデータを求める関数
=VLOOKUP(検索値,範囲,列番号,検索の型[省略可])
- 検索値・・・検索する値(一致させたい場所のセル参照や値、文字列)を指定
- 範囲・・・検索する(一致させる)相手のデータ全体を指定
- 列番号・・・「範囲」で指定したデータの、左から何列目と「検索値」を一致させるかを指定
- 検索の型・・・完全一致させたい場合は「FALSE」、近似値で一致させたい場合は「TRUE」を入力。省略した場合は「TRUE」になる。(FALSEは「0」、TRUEは「1」でも可)
大切なのは一番最初。
[検索値]の場所には C2&”*” と指定します。
通常ワイルドカードで「~で始まる」を指定する場合は「C2*」と指定すれば良いのですが、関数内で使用する時はワイルドカード文字を「”」で囲む必要があるということです。
そして、その“*”を&演算子でC2と繋いであげます。
今回のポイントはこれで終わりです・・・。
後は通常通り、[範囲]の場所にはデータを一致させたい表を指定して絶対参照に。
そして、今指定した範囲の「3列目」のデータが欲しいので列番号に「3」を入力。
[検索方法]には完全一致の「false」もしくは「0」を指定すれば終了です。
[OK]を押し、オートフィル機能を使用して下にコピーすればOK。
【注意点】
今回使用したデータは、「コード」前半4桁の「運搬注意」のデータは同じものが入力されているという前提です。
下の表を見ると、「A200」で始まるデータの「運搬注意」は全て「A」になっていますね。
もし、それぞれが「A」「B」「C」のように違うデータが入力されていた場合は、
一致した一番上のデータが使用されることになっています。
この点には注意が必要です。
まとめ
業務で使用するデータは統一されている事が多いので今回のように部分一致させる必要がある場面は稀かもしれません。
いざという時に役立つ感じですね。
今回は「〇から始まる」データを検索する例で説明しました。
「C2」を参照する仮定で、他の例もまとめておきます。
- 「C2」から始まる・・・C2&”*”
- 「C2」で終わる・・・”*”&C2
- 間に「C2」を挟む・・・”*”&C2&”*”
複数文字ではなく、1文字限定で検索する場合は「*」を「?」に変更してください。
また、セル参照を使用せずに「A100」のように直接入力して指定する場合は、
“A100*”
とダブルクォーテーションで囲んで指定します。
「複数一致した場合は、1番上のデータが表示される」ことには注意が必要です。
ワイルドカードは便利だにゃー