2023年7月25日【ID:0】
【Excel】シート名などの文字列からその値を参照する数式
それぞれのシートのセルA2に、「"100","200","300"」と値が入力されています。
シート名は、それぞれ「"202301","202302","202303"」になります。
この各シートのセルA2の値を、以下の画像のセルB3の値を参照して、セルB6に抽出する数式を実現していきます。
通常、他のシートの値を参照する場合、以下のような数式になるかと思います。
='202301'!A2
他のシートの参照は、「(シート名)!(セルのアドレス)」となります。
シート名「202301」を囲む「'」は省略できる場合もあります。
「'」は直接参照すると自動で入力される場合と、されない場合があります。
「'」が入力される場合は、シート名に数字がある場合や「!」などの特殊な記号があるときなどがあります。
これはシート名と数値などを判別しやすくするためのものです。
そのため、以下のように省略して入力しても参照することができます。
=202301!A2
ただ、「!」などの特殊な記号を含む場合は、どこまでがシート名なのかが判断できず参照できないため、直接入力する際は注意する必要があります。
では、この内容を踏まえて、以下のように、セルB3の値を参照して、対象のシートの値を抽出する数式を実現していきます。
そこで「INDIRECT関数」が必要になります。
=INDIRECT(参照文字列, [参照形式])
// 指定された文字列へ参照した値を返す
※引数[参照方式]は、今回は使用しないため、解説は省略しています。
まず初めに、セルへ参照するアドレスの文字列を数式で作成します。
=B3&"!A2"
上記の数式のように"&"を使うことで文字結合することができます。
直接、文字列を結合する場合は、文字列を「"」で囲む必要があります。
後は、この作成された文字列「202301!A2」のセルを参照し、値を抽出します。
そこで、INDIRECT関数を活用します。
=INDIRECT(B3&"!A2")
このように、セルの値(シート名)を参照して、対象のシートの値を抽出することができました。
INDIRECT関数を活用することで、以下のような各シートの値を抽出した表も簡単に作成することができます。
=INDIRECT(B4&"!A2")
// この数式を入力し、下のセルへコピーする