エクセルでデータを扱っていると、「ある値と一致したら別のセルの値を表示したい」「二つの条件が一致したら特定の値を返したい」「リストに含まれていれば対応する値を取得したい」といった場面に遭遇することはありませんか?
この記事では【Excel】エクセルで一致したら別のセルの値を返す(二つの値・この範囲内・リストにあればなど)方法について解説していきます。
ポイントは
・IF関数で二つの値の一致を簡単に判定して返す
・VLOOKUP関数で一致した値から別のセルの値を返す
・INDEX関数とMATCH関数で柔軟な検索を実現
です。
それでは詳しく見ていきましょう。
目次
エクセルで二つの値が一致したら別のセルの値を返す方法1【IF関数で簡単判定】
エクセルで二つのセルの値が一致しているかを確認し、一致していたら別のセルの値を返す最もシンプルな方法が、IF関数を使うことです。
IF関数で二つのセルを比較し、一致した場合に指定した値や別のセルの値を返すことができ、条件分岐の基本として最適です。
例えば、以下のようなデータがあるとします。
注文コードと確認コードが一致していたら価格を表示し、一致していなければ「確認必要」と表示したい場合、この方法を使えば簡単に実現できるでしょう。
解決方法
具体的な手順を見ていきましょう。
まず、判定結果を表示したいセル(例としてE2)に以下の数式を入力します。
=IF(A2=B2,D2,”確認必要”)
この数式は、A2セルとB2セルが一致していればD2セル(価格)の値を返し、一致していなければ「確認必要」と表示します。
IF関数の構文は「=IF(条件,真の場合,偽の場合)」となっており、「=」で二つのセルを比較しているわけです。
数式を下方向にコピーすれば、各行で判定が実行されます。
結果として、1行目と3行目は価格が表示され、2行目と4行目は「確認必要」と表示されます。
複数のセルの値を組み合わせて返すことも可能です。
=IF(A2=B2,C2&”:”&D2,”不一致”)
この数式は、一致していれば「アボカド:250」のように商品名と価格を結合して表示します。
・操作のポイント:IF関数で二つのセルを「=」で比較し、一致した場合に別のセルの値を返すことで、シンプルな条件判定ができます
複数条件の一致を確認する場合
二つだけでなく、さらに多くの条件を確認したい場合は、AND関数を組み合わせましょう。
=IF(AND(A2=B2,D2>200),C2,”対象外”)
この数式は「A2とB2が一致」かつ「価格が200以上」という2つの条件が両方とも真の場合に商品名を返します。
また、いずれかの条件が一致すればよい場合は、OR関数を使用します。
=IF(OR(A2=B2,A2=”A001″),D2,””)
この数式は「A2とB2が一致」または「A2がA001」のどちらかが真なら価格を表示するでしょう。
エクセルで一致したら別のセルの値を返す方法2【VLOOKUP関数で基本的な検索】
特定の値をリストから検索して、対応する別のセルの値を表示したい場合もあります。
そんな時に役立つのが、VLOOKUP関数を使った検索と値の取得です。
VLOOKUP関数を使えば、検索値を指定して一致した行から特定の列の値を取り出すことができます。
例えば、以下のようなマスターデータがあるとします。
商品コードを入力したら、対応する商品名や価格を自動的に表示したい場合を考えてみましょう。
解決方法
「ホーム」タブをクリックして、検索したい商品コードを入力するセルと結果を表示するセルに移動します。
【ここに図を挿入】
E2セルに検索したい商品コードを入力し、F2セルに以下の数式を入力します。
=VLOOKUP(E2,A2:C6,2,FALSE)
この数式は、E2セルの値をA2:C6の範囲の左端列で検索し、一致した行の2列目(商品名)を返します。
VLOOKUP関数の構文は「=VLOOKUP(検索値,範囲,列番号,検索方法)」となっており、最後のFALSEは完全一致を意味するわけです。
E2セルに「A003」と入力すれば、F2セルに「パクチー」と表示されます。
価格を表示したい場合は、G2セルに列番号を3に変更した数式を入力します。
=VLOOKUP(E2,A2:C6,3,FALSE)
これで「A003」に対応する価格「150」が表示されるでしょう。
【操作のポイント:VLOOKUP関数の第1引数に検索値、第2引数に検索範囲、第3引数に取り出したい列番号、第4引数にFALSEを指定することで、一致した値から別のセルの値を返すことができます】
エラー処理を追加する方法
検索値が見つからない場合、VLOOKUP関数は「#N/A」エラーを返します。
これを回避するには、IFERROR関数と組み合わせましょう。
=IFERROR(VLOOKUP(E2,A2:C6,2,FALSE),”該当なし”)
この数式は、エラーが発生した場合に「該当なし」と表示します。
また、検索範囲を絶対参照($マーク)で固定しておくと、数式をコピーする際に便利です。
=VLOOKUP(E2,$A$2:$C$6,2,FALSE)
エクセルで一致したら別のセルの値を返す方法3【INDEX関数とMATCH関数でより詳細な検索が可能に:右から左に検索など】
VLOOKUP関数は便利ですが、検索列が左端にある必要があるという制限があります。
そんな中「右から左に検索する」には、INDEX関数とMATCH関数を組み合わせた方法が便利です。
INDEX関数とMATCH関数を組み合わせることで、検索列の位置に関係なく、どの列からでも値を取り出すことが可能です。
例えば、以下のようなデータで商品名から商品コード(右から左に検索)を検索したい場合を考えてみましょう。
商品名を入力したら商品コードや在庫数を表示したい場合に最適です。
解決方法
「ホーム」タブをクリックして、結果を表示したいセルに移動します。
E2セルに検索したい商品名を入力し、F2セルに以下の数式を入力します。
=INDEX(A2:A5,MATCH(E2,B2:B5,0))
この数式は、MATCH関数でE2セルの値がB2:B5の範囲の何行目にあるかを調べ、INDEX関数でA2:A5の範囲からその行の値を取り出します。
MATCH関数の第3引数の「0」は完全一致を意味するわけです。
E2セルに「アサイー」と入力すれば、F2セルに「B003」と表示されます。
同様に在庫数を取得したい場合は、G2セルに以下の数式を入力します。
=INDEX(D2:D5,MATCH(E2,B2:B5,0))
これで「アサイー」に対応する在庫数「20」が表示されるでしょう。
INDEX関数とMATCH関数の組み合わせは、VLOOKUP関数より柔軟で、左側の列を参照することも、複数の列から値を取り出すことも簡単にできます。
操作のポイント:MATCH関数で検索値の位置を特定し、INDEX関数でその位置の値を取り出すことで、どの列からでも柔軟に値を返すことができます
エラー処理と範囲の固定
こちらもエラー処理を追加しておくと安心です。
=IFERROR(INDEX($A$2:$A$5,MATCH(E2,$B$2:$B$5,0)),”見つかりません”)
範囲を絶対参照で固定することで、数式をコピーしても正しく動作します。
また、複数の列から同時に値を取得したい場合は、INDEX関数の範囲を広げることも可能です。
=INDEX(A2:D5,MATCH(E2,B2:B5,0),1)
この数式の最後の「1」は取り出す列番号を指定しており、変更することで異なる列の値を取得できます。
まとめ エクセルで2つのセルの文字列や数値が一致したら値を返す(二つの値・この範囲内・リストにあれば)方法
エクセルで一致したら別のセルの値を返す方法をまとめると、IF関数で二つのセルを比較すれば一致した場合に指定した値や別のセルの値を簡単に返すことができ、VLOOKUP関数を使えばリストから検索値を探して対応する列の値を取り出すことが可能です。
また、INDEX関数とMATCH関数を組み合わせれば検索列の位置に関係なく柔軟に値を取得でき、IFERROR関数でエラー処理を追加すればユーザーフレンドリーな表示になります。
これらの方法を状況に応じて使い分けていけば、ほとんどのケースで値の照合・検索問題を解決できるでしょう。
特にシンプルな二つの値の一致判定にはIF関数が最も簡単で理解しやすいため、まずこの方法から始めることをおすすめします。
ただし、大量のデータを扱う場合はVLOOKUP関数やINDEX関数とMATCH関数の組み合わせの方が効率的なため、データ量に応じて適切な関数を選択することも大切かもしれません。
エクセルの検索・照合関数を正しく理解して、効率的なデータ処理を実現していきましょう!