Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
INDIRECT関数を使って別シートのセルを参照する:Excel関数の技
Home » エクセル関数の技 » INDIRECT関数を使って別シートのセルを参照する
更新:2025/9/28;作成:2016/4/6
INDIRECT関数を使って別シートのセルを参照する topへ
別のシートのセルを参照したいときのINDIRECT関数の使い方です。
ここでは下図のように月別のシートに日付ごとのデータが入力されている例を使って説明します。
シート名は 4月、5月、6月としています。
各月のシートには1行目に日付データが入力されています。
ここではSheet5で各日付の合計値を取り出そうとしています。
B2セルに日付を入力したらその日付の合計値をB3セルに表示したいということです。
他のシートを直接参照する数式を作成するときの注意点
直接シート名を指定するときはちょっと注意が必要です。
INDIRECT関数では「’」(シングルクォーテーションマーク)は不要ですが、注意点として書いておきます。
「2016/5/3」の合計値を表示するには シート名が「5月」のシートの「5月3日」の列の12行目を参照すればよいので表引きの関数HLOOKUPが利用できることに気付きます。
=HLOOKUP(B2, と入力して、シート「5月」のB1:H12セルを選択すると、
=HLOOKUP(B2, '5月'!B1:H12 と入力されます。
シート名が「’」(シングルクォーテーションマーク)で囲まれています。
シート名にスペース(半角または全角、あるいは両方)が入っている場合、
シート名が数字で始まっている場合、
シート名をシングルクォーテーション「 ' 」で囲わないと、シート名がスペースで分断されてしまい、シート名の参照エラー( #REF! )となります。
↓
数式は =HLOOKUP(B2, '5月'!B1:H12 ,12,FALSE) とします。
ほかのシートを参照する数式をINDIRECT関数を使って作成する
日付が「2025/4/5」となったら数式は =HLOOKUP(B2,'4月'!B1:H12,12,FALSE) と修正する必要があります。
参照するシートが変わるたびに数式を修正するのは面倒 ですので、どうにかしたい・・・・
入力される日付の月とシート名の数字が同じですので、MONTH(B)&"月" とすると参照するシートを指定できることに気付きます。
数式内では INDIRECT関数で INDIRECT( MONTH(B2)&"月!B1:H12" ) と指定することができます。
=HLOOKUP(B2,INDIRECT( MONTH(B2)&"月!B1:H12" ) ,12,FALSE)
となりました。
XLOOKUP関数で数式を作成すると、
=XLOOKUP(B2,INDIRECT(MONTH(B2)&"月!B1:H1"),
INDIRECT(MONTH(B2)&"月!B12:H12"),"-")
となります。
XLOOKUP関数 はExcel2021以降で使用できます。
INDIRECTとは離れてしまいますが・・・
実は、データの位置が3つのシートとも同じなので、3-D参照が可能なことがわかります。
3つのシートを横に結合して、XLOOKUP関数で取り出すことも可能だと気付きます。
=XLOOKUP(B2,
TAKE(HSTACK('4月:6月'!B1:H12), 1 ) ,
TAKE(HSTACK('4月:6月'!B1:H12), -1 ) ,"-")
とすることも可能です。
TAKE関数 、HSTACK関数 はExcel for Microsoft365, Excel2024以降のバージョンで使用できます。
ハイフンを含むシート名をINDIRECT関数で使用するには?
下図のようにシート名が「2025-7」とハイフンが含まれているときは?
日付に「2025/7/5」と入力されているときに「2025-7」とするには TEXT関数を使うことが考えられます。
TEXT(B2,"yyyy-m") とすればよいと思われます。
ところが、そのまま利用して =HLOOKUP(B2,INDIRECT(TEXT(B2,"yyyy-m")&"!B1:H12"),12,FALSE) とすると・・・ #REF!
エラーとなってしまいます。
シート名をシングルクォーテーションマーク で囲む必要があります。
TEXT関数で前後に ’ (シングルクォーテーションマーク)を付けるようにします。
数式を =HLOOKUP(B2,INDIRECT(TEXT(B2," ' yyyy-m ' ") &"!B1:H12"),12,FALSE) とします。
スポンサードリンク
Home »
エクセル関数の技 »
INDIRECT関数を使って別シートのセルを参照する
PageViewCounter
Since2006/2/27