記事の詳細
Excelで2つの表から1つの表にデータを抽出する方法(VLOOKUP、IFERROR、IF関数を使用)
こんにちは。
新年初の投稿はExcelの記事です。
今回はIF関数とIFERROR関数、VLOOKUP関数を使って複数の表(テーブル)からデータを抽出してくる方法です。
もし「複数の表があり、1つの表にまとめたい」という要望がありましたら、この方法が使えるかもしれません。
ぜひ最後までお読みいただけましたら嬉しく思います。
今回のブログの見出しはコチラです!
今回使用するテストデータ
国語、数学、英語の基礎編のテストと応用編のテストを受けた方の点数を1つの表を作るという想定となっています。
基礎編の表
応用編の表
この表を1つにまとめるとこのようになります。
これらの表は別々のシートとなっています。
今回使用する関数は、VLOOKUP関数とIFERROR関数、IF関数の3つを使用します。
次にそれぞれの関数の役割をお伝えします。
それぞれの関数の役割
VLOOKUP関数で知りたい情報を抽出します。
検索値 :検索範囲内先頭列で検索するデータを指定します。
検索範囲:目的のデータが含まれる文字列や数値または、論理値のテーブルを指定します。
列番号 :検索範囲の列番号を指定し、ここで指定された列で検索値と一致した値が返されます。
[検索方法]:TRUE(近似一致)かFALSE(完全一致)を選択します。
IFERROR 関数でVLOOKUP関数がエラーとなった場合の処理を行います。
値:エラー値(#N/Aなど)
エラーの場合の値:仮に1と入力しますと値がエラーだった場合1となります。
IF関数でデータが抽出できる場合とできない場合を判定します。
論理式:A2=0 (セルA2が0だった場合)などの式を入れます。
[真の場合]:上記の論理式の例に基づきますと、A2のセルが0だった時の値の判定をします。
[偽の場合]:上記の論理式の例に基づきますと、A2のセルが0ではなかった時の値の判定をします。
それでは、複数の表(テーブル)からデータを抽出してくる方法を手順を追ってお伝えします。
手順①:VLOOKUP関数の式でデータを抽出します。
今回2つの表からデータをそれぞれ抽出し、1つの表にまとめます。
まずVLOOKUP関数を使って、基礎編の表にある
「田中 太郎さん、佐藤 三郎さん 高田 五郎 さん」の国語のデータ
を抽出します。
抽出しますとこのような感じになります。
田中 太郎さんの点数は下記の式で抽出しています。
=VLOOKUP(A2,基礎編!$A$1:$D$4,2,FALSE)
検索値:A2のセル(田中 太郎)を選択します。
範囲:基礎編のシート$A$1:$D$4までを選択します。
列:国語の列は2列目ですので「2」を入力します。
検索方法:FALSEの完全一致を選択します。
手順②:IFERROR関数を使って#N/Aとなっているデータを空欄(””)にします。
次のステップは田中 二郎さん、佐藤 四朗さん、高田 六尾さんの国語の点数が#N/Aとなっています。
これは、この3人は基礎編ではなく応用編を受けているため、データがないという事で#N/Aという値になっています。
まずはこのエラーを空白にします。
その際に使用する関数はIFERROR関数を使用します。
使用するとこのように#N/Aとなっていた、田中 二郎さん、佐藤 四朗さん、高田 六尾さんの国語の点数が空白となります。
空欄にする式は下記の式です。(例は田中 次郎さんのデータです)
=IFERROR(VLOOKUP(A3,基礎編!$A$1:$D$4,2,FALSE),””)
エラー値が#N/Aなどのエラーだった場合、エラーの場合の値を返します。
この場合「””」なので空欄となります。
手順③:IF関数を使用して空欄のデータの場合、応用編の表のデータからデータを抽出します。
次のステップは田中 二郎さん、佐藤 四朗さん、高田 六尾さんの国語の点数を応用編の表から抽出するとこのようになります。
式は下記の式で抽出しています。
=IF(IFERROR(VLOOKUP(A3,基礎編!$A$1:$D$4,2,FALSE),””)<>””,VLOOKUP(A3,基礎編!$A$1:$D$4,2,FALSE),VLOOKUP(A3,応用編!$A$1:$D$4,2,FALSE))
すこし複雑ですので解説いたします。
IF関数ですので、3つのブロック(論理式、真の場合、偽の場合)に分かれます。
真の場合で基礎編の値を抽出しています。
偽の場合で応用編の値を抽出しています。
論理式ですが複雑のように見えますが、
基礎編の表から抽出するデータが空欄ではない(抽出するデータがある)場合
としています。
IF関数の論理式にてあえて「<>」(ノット イコール)を使用していますが、=でも可能です。
=を使用する場合は、真の場合と偽の場合の値が入れ替わりますのでご注意ください。
あとは同じように数学と英語も計算をしますと…
となります。
注意点
この方法は便利な反面使用する時の注意点が2つあります。
・VLOOKUPの検索値が2つの表に共に存在している場合、この方法は使用できません。
今回基礎編と応用編の表を元に使用しましたが、基礎編にデータがない場合応用編を抽出するという計算ですので、基礎編にデータがある場合、仮に応用編にデータがある場合図のように基礎編の点数のみしか抽出されません。
・今回表が2つの想定で行っています。3つ以上は式が複雑になりIF関数の判定で間違えるリスクが増えます。
おわりに
いかがでしたでしょうか。
もしこちらの記事についてご不明点等ございましたらお気軽にお問い合わせくださいませ。