スポンサーリンク

Excel で表から条件に一致するデータを取得する方法とは?~関数VLOOKUP~

関数
スポンサーリンク

Excel でデータをまとめたり、分析したりする際に条件に応じてセルの値を変化させたい時があります。

その際、例えばフィルタを使ってセルを抽出、手入力で値を打ち込むことを行う人がいるかもしれません。

もしくは、IF関数やIFS関数を使って長い条件式を書いている人がいるかもしれません。

最終的な結果はどれも同じですが、効率に大きく差が開きます。

今回は、知っておくと便利なVLOOKUP関数で条件一致によるデータの変化させる方法について、紹介したいと思います。

Excel におけるVLOOKUPとは?

Microsoft Officeの公式サポートページでは以下のように説明されています。

テーブル内の項目や行ごとの範囲を検索する必要がある場合は、VLOOKUP を使用します。 たとえば、自動車部品の価格を部品番号で検索するか、従業員 ID に基づいて従業員名を検索します。

Microsoft Officeサポート〝VLOOKUP〟

Vertical(垂直)で Lookup(見つける)関数になります。

ここで何を見つけるか?というと、ある範囲内で指定した値を縦方向に検索して見つけ出すということになります。

表示する値は右方向に指定した列数移動することになりますが、これは横方向で値を見つけ出したと考えるよりも、縦方向で見つけ出した後に指定した列数右に移動しただけなので、関数には垂直の〝V〟がついていると考えるのが納得できます。

また、上記説明でもある通り、横方向に探し出したい場合は、HLOOKUP関数を使用するようにしましょう。

Excel におけるVLOOKUP関数の構文

まず、VLOOKUP関数は以下の構文で表記されます。

VLOOKUP(検索値, 範囲, 行番号, [検索の型])

それぞれに指定するものの意味は以下の通りです。

  • 検索値 テーブルの上端行で検索する値
  • 範囲 データを検索する範囲
  • 行番号 値を返すデータが存在している範囲内の行番号
  • 検索の型 完全一致で検索するか、近似値を含めて検索するかを〝FALSE〟〝TRUE〟で指定

検索の型については省略することが可能です。

検索値では、関数の中で値(文字列)を指定することもできますし、セルを参照して指定することも可能です。

例えば、VLOOKUP(1,~,~)とすることや、VLOOKUP(A1,~,~)とすることも可能です。

範囲については、セルの範囲を指定する他に、範囲にあらかじめ名前を付けておいて、その範囲名で指定することも可能です。

例えば、VLOOKUP(~,A1:D10,~)とすることや、VLOOKUP(~,Name1,~)とすることも可能です。

行番号については、1より大きい数値を指定します。

検索の型については、省略することが可能ですが、指定する場合は〝TRUE〟か〝FALSE〟を指定します

指定しない場合は部分一致の検索〝TRUE〟となっていますので、完全一致で検索させたい場合は、必ず〝FALSE〟を指定してください。

なお、〝TRUE〟の代わりに0以外の数値、〝FALSE〟の代わりに0を利用することも可能です。(理解するためには〝TRUE〟〝FALSE〟の方が良いとは思います)

個人的には、完全一致の方がTRUEになっても良いような気がします。

VLOOKUP関数の使い方・利用シーンは?

VLOOKUP関数をどういった時に使用するかを紹介します。

VLOOKUP関数は、縦方向に捜査する関数なので、参照元のデータが縦方向に重複せずに並んでいるものを元にして条件分岐させたい場合に有効です。

例えば、以下のようなくだものの購入履歴のデータがあり、くだものに当てはまる金額を入力したいときに、VLOOKUP関数が利用できます。

購入者購入品金額
Aさんりんご
Aさんいちご
Aさんメロン
Bさんすいか
Bさんバナナ

この際、別に以下のようなマスタとなる金額データを作成し、金額セルの中に関数を入れることで、自動的に金額を入力することができます。

りんご98
みかん298
ぶどう1400
いちご79
メロン1980
すいか4980
バナナ98

この際、購入履歴のデータがA1~C6にある(ヘッダが1行目)として、マスタとなる金額データがE1~F7にあると想定します。

金額セル(C2)で関数設定を〝=VLOOKUP(B2, E1:F7, 2, FALSE)〟とすると、C2セルにはりんごの金額〝98〟が入力されます。

この際、〝E1:F7〟部分を$を使って、セルの固定を指定する〝$E$1:$F$7〟とすると、残りのセルにもセルをコピペするだけで、全て自動的にデータを入力させることができます。

Excel におけるVLOOKUP関数の考え方

VLOOKUP関数の考え方はどうなるかについて紹介します。

Excel におけるVLOOKUP関数の動き

それでは、VLOOKUP関数が実行されるとき、どのような動きとなっているのでしょうか?

検索の型がTRUEの場合とFALSEの場合で少し動きが変わってくるので、分けて紹介したいと思います。

検索の元となるテーブルは以下の通りとし、検索するフィールドが昇順に並んでいるものとします。

Excelにてサンプルデータとして作成したい場合は、以下のテーブルからコピーして使用してみてください。

1りんご98
2みかん298
3ぶどう1400
4いちご79
5メロン1980
6すいか4980
7バナナ98

検索の型がTRUEの場合(指定しない場合)

一致する値が存在した場合

ここでの関数の設定は以下の通りとします。

VLOOKUP(6, A1:C7, 2, TRUE)

まず、検索を行う範囲を設定します。今回はA1:C7の範囲が検索が実行されるデータの範囲です。

A1:C7の範囲の一列目のA1~A7の中で〝6〟という数値を検索します。

すると、A6に一致する値〝6〟が存在することが分かります。

そして、6が存在する6行の2列目はB6となり、そこに存在する値は〝すいか〟なので、関数の出力値は〝すいか〟となります。

一致する値が存在しなかった場合

では、一致する値が存在しなかった場合はどうなるのでしょうか?

ここでの関数の設定は以下の通りとします。

VLOOKUP(10, A1:C7, 2, TRUE)

先ほどと同じように、検索する範囲はA1:C7です。

A1~A7の中で〝10〟を探しても、見つかりません。

この場合、代替の値として、10よりも小さくて、1列目に存在する一番大きな(最後の)値を見つけることになります。

ここで10よりも小さい中で一番大きな(最後の)値は〝7〟となり、A7に存在しています。

7行の2列目、B7に存在する値は〝バナナ〟になるため、〝バナナ〟が関数の出力値となります。

分かりやすくなるように、テーブル中の一番大きな値で表現しましたが、例えば、A7の値が〝70〟だった場合は、A6の〝6〟が10よりも小さくて、1列目に存在する大きな(最後の)値になるため、関数の出力値は〝すいか〟となります。

検索の型がFALSEの場合

次に、検索の型がFALSEの場合の関数の動きを紹介します。

一致する値が存在した場合

一致する値が存在する場合の関数の動きについては、TRUEの場合と全く同じです。

前述していますので、目次から飛んできた方はこちらをクリック

一致する値が存在しなかった場合

一致する値が存在しなかった場合の動きは、TRUEの場合と少し異なります。

ここでの関数の設定は以下の通りとします。

VLOOKUP(10, A1:C7, 2, FALSE)

検索する範囲はA1:C7となり、A1~A7の中で〝10〟という値を探しますが、見つかりません。

この場合、VLOOKUP関数では、TRUEの場合のように代替の値を検索することはなく、#N/Aというエラーを出力します。

検索フィールドの順番に注意!

検索の型がTRUEの場合、検索フィールドが昇順になっている必要があります。

検索フィールドが昇順になっていない場合、自分が求める正しい値が求められない可能性があるため、注意しましょう。

ここでは、検索フィールドが昇順になってない場合のVLOOKUP関数の出力値の変化をいくつか紹介します。

先ほど紹介したデータの1行目の値の7と2が入れ替わったものをデータとして使用してみます。

1りんご98
7みかん298
3ぶどう1400
4いちご79
5メロン1980
6すいか4980
2バナナ98

VLOOKUP関数の検索値を〝2〟〝3〟〝7〟〝10〟とそれぞれ変化させた場合の出力値は以下の表の通りとなります。

関数出力値
VLOOKUP(2,A1:C7,2,TRUE)りんご
VLOOKUP(3,A1:C7,2,TRUE)りんご
VLOOKUP(7,A1:C7,2,TRUE)バナナ
VLOOKUP(10,A1:C7,2,TRUE)バナナ

このように、目で見たデータでは、①の出力結果は〝バナナ〟となってほしいところですが、結果は〝りんご〟。

②の出力結果は〝ぶどう〟となってほしいところですが、結果は〝りんご〟。

③の出力結果は〝みかん〟となってほしいところですが、結果は〝バナナ〟。

④の出力結果は10より小さい数値の最大値は7なので、〝みかん〟となりそうなところですが、結果は〝バナナ〟。

と想定とは全く違う動きをします。

そのため、検索の型をTRUE(指定しないで省略する)場合は、元々のデータが昇順に並んでいることを確認してください。

検索フィールドのデータの重複に注意!

検索の型に寄らず、検索フィールドのデータが重複していると、欲しい結果とならない可能性があるため、検索フィールドのデータの重複には注意してください。

先ほどのデータの3が2になったものを例として使用します。

1りんご98
2みかん298
2ぶどう1400
4いちご79
5メロン1980
6すいか4980
7バナナ98

このように、検索フィールドのデータが重複している場合に、VLOOKUP関数のTRUEとFALSEを変更させた場合の出力値の変化は以下のようになります。

関数出力値
VLOOKUP(2,A1:C7,2,TRUE)ぶどう
VLOOKUP(2,A1:C7,2,FALSE)みかん

このように、データが重複しているとき、検索の型がTRUEの場合はよりデータが後ろにあるものが、検索の型がFALSEの場合は、よりデータが前にあるものが結果として出力されます。

そのため、欲しいデータが出力されない可能性があるので、検索フィールドのデータが重複していないか、確認をする必要があります。

まとめ

今回は、条件に一致するものをデータとして出力する方法として、VLOOKUP関数について紹介しました。

条件一致によるデータの出力・集計等は表計算ソフトである Excel の醍醐味だと言っても過言ではないと思っています。

条件一致・条件分岐系の関数は覚えていくとかなり使える知識なので、是非活用してください!

コメント

タイトルとURLをコピーしました