クイック エンジニアリングブログ

株式会社クイック Web事業企画開発本部のエンジニアリングチームが運営する技術ブログです。

頼りになる『VLOOKUP』で困ったら『INDEX』&『MATCH』関数で解決できた件

「そういう仕様だから」
この言葉って使う時は簡単なのに、言われると「はあ?」ってなりますよね。

本記事はエクセルやスプレッドシートの関数の中で、『VLOOKUP』で困ったことがある人向けの記事です。

今回フォーカスをあてるのは以下2つです。
 ・【範囲】の間に、列追加をしたら結果がずれる
 ・右側の列にあるデータをもとに、左側のデータを呼び出すことはできない

改めましてこんにちは。サービスプランナーのZAWAです。

業務では、サービス・事業・組織と三軸それぞれでの企画やマーケットリサーチ、ビジネスパートナーとの渉外などを担当しています。プロダクト開発の中では、要件定義や設計の一部などを行なっています。

目次

1. 取得の子 『VLOOKUP』

2. VLOOKUPの逆襲

3. ワイルドカンスウ スーパーコンボ『INDEX関数とMATCH関数』

取得の子 『VLOOKUP』

エクセルを使った業務をしたことある人なら、誰もがお世話になったことあるのではないでしょうか?

「あー、特定のセルに入っている値を取り出したい、でも目視では大変。IDは分かるのになー」
みたいな時、『VLOOKUP』はとても心強い友達でした。

使った時のすがすがしさときたら、土砂降りの雨の中、急に晴れ間が見えた時のようでした。

用法は以下ですが、ここでは割愛します。
= VLOOKUP (【検索値】,【範囲】,【列位置】,【検索の型】)

VLOOKUPの逆襲

【範囲】の間に、列追加をしたら結果がずれる

こんな参照データがあったとします。
参照データ001初期準備

そして隣の抽出シートで“003zawa”と入力したら“ざわさん”と表示されてほしいとします。
イメージはこんな感じ。
抽出シート001

関数式は以下としました。
=VLOOKUP(B2,参照データ!A:B,2,0)

指定する値に“003zawa”と入力すると……
抽出シート002
“ざわさん”と出ました!!
やった!!

しかし運用を続けていく中で……
「あー参照データに“カテゴリ”もほしいわ。追加したろ!」
となることもあるでしょう。
参照データのB列を選択して列を挿入し、カテゴリ列としました。
参照データ002カテゴリ列追加

そのまま抽出シートを見ると……
「あれ、変わってる!?」
抽出シート_002結果が変わった

右側の列にあるデータをもとに、左側のデータを呼び出すことはできない

これはもう、まんまです。
“色鉛筆”と入れてID“002zawa”と呼び出すことはできません。

そう、これが仕様です。

ワイルドカンスウ スーパーコンボ『INDEX関数とMATCH関数』

ここからは『INDEX』と『MATCH』関数を組み合わせて使うと、『VLOOKUP』でやりたかったことはできるし、上のような問題は発生しないから便利だよという話です。

以下の関数式を用いて比較していきます。
=INDEX(参照データ!B:B,MATCH(B2,参照データ!A:A,0))

まず、時間をカテゴリ列追加前に戻して、先に抽出シートに上の関数を追加しておきます。
抽出シート003『INDEX』&『MATCH』関数式追加

次に参照データにカテゴリ列を追加します。
参照データ002カテゴリ列追加

抽出シートを見てみると……
「け、結果が違う! よしゃ、組み合わせの方使ったら問題なしや。」
抽出シート004異なる結果

もちろん場合によっては「追加した列のデータを出したいんじゃい」
ということもあると思います。
その場合むしろ『VLOOKUP』の方が使いやすいかもしれません。

株式会社クイックでは様々な職種の人間が自分にできる最大効率を目指して働いております。


\\『明日のはたらくを創る』仲間を募集中です!! // 919.jp