小技集

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ



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)

このようにして、指定した支店名のシートの表から、指定した商品名を検索し、その商品名と一致する商品の価格を抽出することができます。


パソコンで開く場合は、記事の最後に「リンクコピー」があるためご活用ください。


メンバー募集
ExcelVBA特別教材配布 ExcelVBA特別教材配布





リンクの共有はこちらから行えます。

  リンクコピー Twitter Facebook はてなブックマーク Pocket
トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ


- 人気の記事 -



- メンバー限定 [一覧] -



サイト累計閲覧数

4021664

有料動画講座
(買い切り)

Excel完全制覇


ちょっとした機能 便利ツール

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ