Microsoft Excel(エクセル)のVLOOKUP関数は表を縦方向に検索して、検索値を抽出する大変便利な関数です。
このVLOOKUP関数とIF関数を組み合わせて利用すると、さらにVLOOKUP関数の用途が広がります。
今回は、VLOOKUP関数とIF関数を組み合わせて利用することで『抽出値を別の値に変換して表示』する便利な活用方法を3つ解説します。
数式のイメージ
=IF(VLOOKUP(F3,B2:D10,3,FALSE)>=600,"○","×")
エクセルのVLOOKUP関数の基本的な使い方(おさらい)
まずはエクセルのVLOOKUP関数の使い方をおさらいします。
VLOOKUP関数の基礎について熟知されている方は、次の見出しまで読み飛ばしてください。
VLOOKUP関数は、指定した検索条件に『当てはまる値』を、指定した検索範囲から調べて、指定した位置から抽出することが出来る関数です。
VLOOKUP関数の構文は下のとおりで、4つの引数を指定する必要があります。
=VLOOKUP(検索値,検索範囲,列番号,[検索方法])
下の商品リスト表のH3セルには以下のVLOOKUP関数が挿入されています。
=VLOOKUP(G3,$B$3:$E$14,3,FALSE)
指定した商品リスト表(B3:E14)から商品番号「25」を検索し、その左から3列目の商品名である「風邪薬」がVLOOKUP関数の結果として抽出されます。
この表は説明用に小さくしているので、目視でも商品番号「25」の商品名を見つけることは可能です。
しかし、スクロールしないと見れないような膨大なデータの中から検索値を抽出する必要がある時はVLOOKUP関数が大活躍します。
VLOOKUP関数の詳しい使い方は以下の記事で紹介していますので、合わせて参考にしてください。
エクセルのIF関数の基本的な使い方(おさらい)
IF関数についても使い方をおさらいしましょう。こちらも理解している方は読み飛ばしてください。
IF関数の構文は以下のように3つの引数で構成されています。
=IF(論理式,[値が真の場合],[値が偽の場合])
論理式に当てはまるものは、[値が真の場合]の結果を表示し、そうでない場合は[値が偽の場合]の結果を表示します。
IF関数の条件フローを図で表すと、以下のようになります。上の論理式の引数の文字色と下の図の色は同じ内容を表しています。
IF関数の基本的な使い方を1つ紹介します。
下のテスト結果表のD列に以下のIF関数を使って、80点以上であれば”〇”、そうでなければ”×”を表示しています。
=IF(C3>=80,”〇”,”×”)
IF関数を挿入することで、点数の大小で【〇】【×】を判定することが出来ます。
IF関数の詳しい使い方をさらに復習したい方は、以下の記事を参考にしてみてください。
VLOOKUP関数とIF関数を組み合わせると何が出来る?
使い方の実例を紹介する前に、『VLOOKUP関数とIF関数を組み合わせる』とはどういうことを解説します。
関数の中に関数を挿入することを「組み合わせる」、「ネスト」、「入れ子」などといいます。
IF関数の引数の中にVLOOKUP関数を組み合わせるパターンが2つあるので、それぞれどんなことができるのか紹介します。
IF関数の論理式にVLOOKUP関数を利用
VLOOKUP関数は、『表を検索して情報を抽出する関数』です。一方で、IF関数は『条件を指定して、セルの値によって他のセルの値を変換する関数』です。
IF関数の1つ目の引数「論理式」にVLOOKUP関数を挿入することで、
『表を検索して該当する値を抽出し、その抽出値を条件によって別の値を変換する』
ことが出来ます。
下の図解で説明すると、上半分がVLOOKUP関数の領域で「表から値を抽出」します。
下半分がIF関数の領域で抽出された値に条件を設定して、条件に合うか合わないかで表示する結果を変換します。
数式のイメージは以下のとおりです。VLOOKUP関数で表の値を抽出し、その値の大きさによって「〇」か「×」を表示させることなどができます。
数式のイメージ
=IF(VLOOKUP(F3,B2:D10,3,FALSE)>=600,"○","×")
IF関数の「真の値」と「偽の値」にVLOOKUP関数を利用
IF関数の2つ目の引数「真の値の場合」と3つ目の引数「偽の値の場合」にVLOOKUP関数を挿入することで、
『値が真の場合に表から検索値を抽出する条件と、値が偽の場合に表から検索値を抽出する条件を変える』
ことも出来ます。
下の図解で説明すると上半分がIF関数で、論理式の条件に合うかどうかで表示する値を変更します。
下半分がVLOOKUP関数の領域で「値が真の値」か「値が偽の値」かによって、VLOOKUP関数の数式を変えて抽出する値を変更します。
数式のイメージは以下のとおりです。セルの値が「会員」であれば会員価格をVLOOKUP関数で抽出し、セルの値が「それ以外」であれば一般価格をVLOOKUP関数で抽出することができます。
数式のイメージ
=IF(C12="会員",VLOOKUP(B12,B2:D8,3,FALSE),VLOOKUP(B12,B2:E8,4,FALSE))
IF関数とVLOOKUP関数を組み合わせる方法(実例1)
それでは、IF関数とVLOOKUP関数を組み合わせた実例を紹介します。
下の販売高リストをG3セルに、選択した商品番号の販売高が600(千円)以上であれば「〇」、600(千円)未満であれば「×」を表示させます。
それでは、数式を作成する手順を紹介します。
手順1.IF関数を挿入
まずIF関数を挿入します。
=IF(
手順2.論理式にVLOOKUP関数を挿入
F3セルの商品番号の販売高をVLOOKUP関数で抽出するため、IF関数の論理式に以下のVLOOKUP関数を挿入します。(入れ子の利用)
=IF(VLOOKUP(F3,$B$2:$D$10,3,FALSE)
手順3.論理式の条件を指定
VLOOKUP関数で抽出した値が600(千円)以上かどうかを判定するため「>=600」を入力します。
=IF(VLOOKUP(F3,$B$2:$D$10,3,FALSE)>=600,
手順4.IF関数の2つ目の引数を指定
販売高が600(千円)以上の真の値の場合(=当てはまる場合)に「〇」と表示したいため、IF関数の2つ目の引数「値が真の場合」に「〇」を入力します。
=IF(VLOOKUP(F3,$B$2:$D$10,3,FALSE)>=600,"○",
手順5.IF関数の3つ目の引数を指定
販売高が600(千円)未満の偽の値の場合(=当てはまらない場合)に「×」と表示したいため、IF関数の3つ目の引数「値が偽の場合」に「×」を入力します。
=IF(VLOOKUP(F3,$B$2:$D$10,3,FALSE)>=600,"○","×")
手順6.IF関数を確定
IF関数の第3引数を入力したら、「Enter」キーを押して関数を確定させてください。
そうすると、商品番号「15」の販売高は400(千円)と600(千円)未満のため、G4セルは「×」と表示されます。
IF関数とVLOOKUP関数を組み合わせる方法(実例2)
続いて、IF関数とXLOOKUP関数を組み合わせた2つ目の使い方を紹介します。
実例1に引き続き、今度は販売高の大小を判定して、「〇」「△」「×」を自動で表示させます。
下の販売高リストを使って、選択した商品番号の販売高が700(千円)以上であれば「〇」、500(千円)以上700(千円)未満であれば「△」、500(千円)未満であれば「×」をG3セルに表示させます。
関数は長くなりますが、実例1で紹介したIF関数の[値が偽の場合]の中にもう一つのVLOOKUPが入ったIF関数を挿入することで「×」か「△」の分岐を設けます。
簡略化せずに数式で表すと下記のようになります。
緑色の下線部分が「×」か「△」の分岐のために設定した数式です。
=IF(VLOOKUP(F3,$B$3:$D$10,3,FALSE)>=700,"○",IF(VLOOKUP(F3,$B$3:$D$10,3,FALSE)<500,"×","△"))
商品番号「18」で判定した場合、販売高は500以上700千円未満の範囲なので「△」と表示されます。
商品番号「35」で判定した場合、販売高は500未満なので「×」と自動で表示されます。
商品番号「20」で判定した場合、販売高は700以上なので「〇」と自動で表示されます。
IF関数とVLOOKUP関数を組み合わせる方法(実例3)
最後に、IF関数とVLOOKUP関数を組み合わせた3つ目の使い方をご紹介します。
下の価格リストを使って、C12セルの文字が「会員」か「非会員」に合わせて、該当する価格を表から抽出しD12セルに表示させます。
関数が長くなるため、作成する関数を先に紹介しておきます。
下の数式のように、IF関数の2つ目の引数「値が真の場合」にVLOOKUP関数を挿入します。(緑の下線部)
IF関数の3つ目の引数「値が偽の場合」に2つ目のIF関数を挿入し、2つ目のIF関数の「値が偽の場合」にVLOOKUP関数を挿入します。(赤の下線部)
=IF(C12="会員",VLOOKUP($B$12,$B$2:$D$8,3,FALSE),IF(C12="非会員",VLOOKUP($B$12,$B$2:$E$8,4,FALSE)))
手順1.IF関数の1つ目と2つ目の引数を入力
C12セルが「会員」だった場合に表内から会員価格をVLOOKUP関数で抽出するために以下の数式を作成します。
=IF(C12="会員",VLOOKUP($B$12,$B$2:$D$8,3,FALSE),
手順2.IF関数の3つ目の引数を入力
次にC12セルが「非会員」だった場合に、表内から非会員価格を抽出するため2つ目のIF関数を挿入します。
=IF(C12="会員",VLOOKUP($B$12,$B$2:$D$8,3,FALSE),IF(C12="非会員",VLOOKUP($B$12,$B$2:$E$8,4,FALSE)))
手順3.IF関数を確定
「Enter」キーを押して関数を確定します。そうすると、下の図のように商品番号「25」の会員価格1,000円を自動で表示することが出来ます。
C12セルの会員区分を非会員に変更すると、商品番号「25」の会員価格1,100円が自動で表示されます。
HLOOKUP関数とIF関数を組み合わせる方法
HLOOKUP関数は、『表を横方向に検索して情報を抽出する関数』です。
今回紹介した方法と同じように、HLOOKUP関数とIF関数を組み合わせて利用することも可能です。
表から検索する方向が縦方向ではなく横方向であれば、以下の記事を参考にしてください。
XLOOKUP関数とIFS関数を組み合わせる方法
Microsoft365のサブスクを利用しているユーザーは、VLOOKUP関数の代わりにXLOOKUP関数を、IF関数の代わりにIFS関数を利用すると、数式を作成しやくなります。
この2つの関数は、新機能を備えたIF関数とVLOOKUP関数の新関数です。
以下の記事でXLOOKUP関数とIF関数を組み合わせるネストの方法を紹介していますので、参考にしてください。
関数の中に関数を入れる「ネスト」とは?
エクセルで関数の中に関数を使うことをネスト(入れ子)といいます。
今回はIF関数の中にIF関数やXLOOKUP関数を挿入したので、このネストを使ったテクニックを紹介しました。
ネストに不慣れな方は、IF関数の中にIF関数を挿入する使い方を以下の記事で紹介していますので、ぜひ習得してみてください。