【Excel】別シートのセルの値を飛ばす  INDIRECT関数

【Excel】別シートのセルの値を飛ばす INDIRECT関数

例えば、下のように、別のシートの値をシート名を参照して自動で表示させることができたら便利です。


通常は、B8セルに「=」を入力し、先月のシートのB3セルを参照して表示させることになります。通常の場合→ =’2018.4′!B3

ただし、これでは、来月分のシート(2018.6)を作成するためにシートをコピーすると、B8セルの先月の売上を表示したいセルは、「=’2018.4‘!B3」となり、先月分ではなく「2018.4」の値がそのまま表示されてしまいます。

これを、下のようにA7セルに年月を入力するだけで、その月のシートのB3セル(売上)を表示させる方法があります。

INDIRECT関数を使って別シートのセルの値を飛ばす

B8セルに、

=INDIRECT($A$7&"!b3")

を入力すると、A7セルに表示されているシート名のB3セルの値が表示されます。

今回の例では、先月「2018.4」シートのB3セルに入力されている売上の1,000,000が表示されました。

 

【応用編】

さらに応用編として、

今回は、A7セルに「2018.4」と手入力していますが、これも自動で表示させることができます。

A7セルに、

=IF(+MID(A1,FIND(".", A1)+1,2)-1=0,+LEFT(A1,4)-1&"."&12,+LEFT(A1,4)&"."&+MID(A1,FIND(".", A1)+1,2)-1)

を入力すると、A1セルに表示されている「2018.5」の先月、つまり「2018.4」が自動的に表示されます。

「シート名をセルに表示させる」の記事で紹介したように、シート名を「2018.5」とするだけで、A1セルに「2018.5」が表示され、さらにA7セルに「2018.4」が自動的に表示されます。

これで、来月分の「2018.6」シートを作成した時に、自動的にA7セルに「2018.5」の売上が表示されることになります。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です