2024年11月11日【ID:0】
【Excel】複数シートの表から検索して値を抽出
複数のシートに表が用意されており、シート名を指定することで、該当するシートの表から検索し、該当する値を抽出する方法について解説していきます。
こちらでは、商品価格表が支店ごとで別々のシートに用意されているファイルから、支店名(シート名)と商品名を指定するだけで、該当する支店の表から商品を検索し、その商品の価格を抽出する仕組みを実現していきます。
特定のシートから検索し抽出する
まずは、特定のシートの表から検索し値を抽出する数式を作成していきます。
表から値を抽出する関数には色んな関数がありますが、こちらでは、VLOOKUP関数で抽出していきます。
この関数の使い方は、以下になります。
=VLOOKUP(検索値, 範囲, 列番号, [検索方法])
// 検索値:検索する値
// 範囲:検索する表の範囲(検索する対象の項目を先頭とした範囲)
// 列番号:範囲の先頭から抽出したい項目の位置
// [検索方法]:TRUE(近似一致)もしくは、FALSE(完全一致)を指定
※[検索方法]を省略した場合は、近似一致で検索される
実際に活用してみると、以下のような数式になります。
=VLOOKUP(B5,東京!B:C,2,FALSE)
商品名の項目に入力した値で検索し、「東京」シートの表から該当する商品の価格を抽出しています。
複数のシートから検索し抽出する
では次に、複数のシートから検索できるように修正していきます。
先ほど作成した数式は、以下になります。
=VLOOKUP(B5,東京!B:C,2,FALSE)
今回のファイルは、支店名がシート名になります。
そのため、数式の中のシート名の部分(東京!)が支店名に指定した文字に切り替わるようにすることで、指定した支店のシートから検索し抽出することができるようになります。
ただ、シート名の部分を、以下のように直接、支店名のセルの値を結合した数式にしても、正しく抽出することができません。
=VLOOKUP(B5,B3&!B:C,2,FALSE)
その理由は、「東京!B:C」というのは、抽出対象の範囲を表す文字であって、ただの文字列ではないからです。
ただの文字列ではないので、「&」を使用することができません。
「&」を使用するために、範囲を表す文字を、一度「"」で囲み、ただの文字列にする必要があります。
ただ、「"」で囲った文字列は、範囲を表す文字ではなくなってしまいます。
そのため、「"」で囲った文字列を、再度、範囲を表す文字として認識させる必要があります。
その際は、INDIRECT関数を活用します。
この関数の使い方は、以下になります。
=INDIRECT(参照文字列)
// 参照文字列:参照先の情報
実際に活用してみると、以下のような数式になります。
=VLOOKUP(B5,INDIRECT(B3&"!B:C"),2,FALSE)
このようにして、指定した支店名のシートの表から、指定した商品名を検索し、その商品名と一致する商品の価格を抽出することができます。