INDIRECT関数で集計範囲を切り替えられるように

解説記事内の画像はExcel 2016のものですが、操作方法は下記のバージョンで同じです。
  • Excel 2016, 2013, 2010
Excel 2016・2013・2010用 練習ファイル
(indirect02.xlsx 9.47KB)

INDIRECT関数で集計結果を切り替えて表示01 A6からD10番地までには、1月から3月までの各店舗のデータが表としてまとめられています。
その中で、B7からD7番地は仙台店のデータなので、「仙台店」という名前を、

INDIRECT関数で集計結果を切り替えて表示02 B8からD8番地には「那須店」という名前をあらかじめ設定しています。
同様にしてB9からD9番地には「京都店」、B10からD10番地には「福岡店」という名前を設定しています。

INDIRECT関数で集計結果を切り替えて表示03 そして、これら店舗の合計と平均が表示されるようにしたいのですが、表形式で各店舗の合計と平均を表示させるのではなく、B1番地の店舗名を変更すると、合計と平均もその店舗のものに切り替わるように設定してみます!

合計する範囲、平均する範囲が切り替わるようにする

INDIRECT関数で集計結果を切り替えて表示04 まず、合計を出したい場合はおなじみのSUM関数を使います。
SUM関数は、上の図のような数式になるので、

INDIRECT関数で集計結果を切り替えて表示05 もし仙台店の3ヶ月分の合計を出したい場合には、SUM関数で指定する範囲をB7からD7番地に設定すればいいことになります。

INDIRECT関数で集計結果を切り替えて表示01 でも、もともとこのB7からD7番地には、「仙台店」という名前が設定してあるので、

INDIRECT関数で集計結果を切り替えて表示06 仙台店の3ヶ月分の合計を求める数式は、図のようになります。

INDIRECT関数で集計結果を切り替えて表示02 もちろん、他の店舗のデータ範囲にも、それぞれ名前が設定されているので、

INDIRECT関数で集計結果を切り替えて表示07 数式の名前の部分を変えれば、各店舗の合計を出すことができるわけです。

INDIRECT関数で集計結果を切り替えて表示08 そしてその合計を出す範囲の名前は、B1番地に入力することになるので、「B1番地に入力されている名前の範囲を合計してね」という数式にすれば、B1番地の店舗名を変更するたびに、その店舗の合計が表示されることになります。

INDIRECT関数で集計結果を切り替えて表示09 ところがそうなると、図のような数式を組み立てたくなるわけですが、これが間違い。
これは「B1番地に入っているものを合計してね」という数式。

INDIRECT関数で集計結果を切り替えて表示10 「B1番地に入っているもの」は「「仙台店」という文字」なので、この数式だと「「仙台店」という文字を合計してね」ということになってしまいます。
足し算できるような数字が入力されているわけではないので、「数字は無いよ」と、「0」という答えが表示されてしまいます。

そうです、合計してほしいのはB1番地に入力されているデータそのものではなく、B1番地に入力されているものと同じ名前が付いたセル範囲
ということは、B1番地に入力されているものを、ただの文字ではなく、セルに付けられた名前として認識してほしい、ということをExcelさんにお伝えする必要があるんです!

INDIRECT関数で集計結果を切り替えて表示13 ここで出てくるのがINDIRECT関数
INDIRECT関数は、指定した文字を、ただの「文字」としてではなく、「セルの名前」として認識してね、という関数。

INDIRECT関数で集計結果を切り替えて表示08 今回は、B1番地に入力されている文字を、セルの名前として認識してほしいわけですから、

INDIRECT関数で集計結果を切り替えて表示12 とすれば、B1番地に入力されているものを、普通の文字としてではなく、セル範囲として認識してね、という設定にできます。

INDIRECT関数で集計結果を切り替えて表示08 そのB1番地に入力されているのは「仙台店」という文字。

INDIRECT関数で集計結果を切り替えて表示11 INDIRECT関数を使うことで、B1番地に入っている「仙台店」を、「仙台店」という文字としてではなく、「仙台店」という名前の付いたセルとして認識させてね、とできます。

INDIRECT関数で集計結果を切り替えて表示01 この文書で「仙台店」という名前に予め設定しておいたのはB7からD7番地なので、

INDIRECT関数で集計結果を切り替えて表示14 B1番地に入力されている「仙台店」とは、B7からD7番地のことなんだ、とExcelさんにお伝えすることができるわけです。

INDIRECT関数で集計結果を切り替えて表示12 そして、このセル範囲として認識できるようにしたB1番地の名前の範囲を合計したいわけですから、このINDIRECT関数の数式と、

INDIRECT関数で集計結果を切り替えて表示04 合計を出すSUM関数を組み合わせ、

INDIRECT関数で集計結果を切り替えて表示15 とすれば、B1番地に入力されている店舗の合計を出すことができるというわけです。

スポンサーリンク

数式の設定

INDIRECT関数で集計結果を切り替えて表示15 それでは早速この数式を、

INDIRECT関数で集計結果を切り替えて表示16 B2番地に設定してみることにしましょう!
B2番地を選択し、[関数の挿入]ボタンをクリックします。

INDIRECT関数で集計結果を切り替えて表示17 関数を指定するためのダイアログボックスが表示されます。
この時、SUM関数を選ぶべきなのか、INDIRECT関数を選ぶべきなのか悩んだりしますが、ポイントは「結果として表示させたい関数を先に選ぶ」です。
答えとして表示させたいのは、合計なので、合計を計算するSUM関数を選びます。
[関数の分類]で「すべて表示」を選択し、[関数名]欄で「SUM」を選択。
[OK]ボタンをクリックします。
ちなみに、この一覧から「SUM」を選択する際、「SUM」の頭文字である「S」のところまで、一瞬でスクロールする技を使うと便利です。

INDIRECT関数で集計結果を切り替えて表示18 前のダイアログボックスで「SUM」を選択して[OK]ボタンをクリックすると、このようなダイアログボックスが表示されます。
この[数値1]欄に合計したい範囲を設定します。
今回の場合、合計したい範囲は、B1番地に入力されている名前が付いたセル範囲で、そのセル範囲はINDIRECT関数を使って指定するわけですから、この[数値1]欄にINDIRECT関数を入れ込んでいきましょう。

INDIRECT関数で集計結果を切り替えて表示19 [数値1]欄に文字カーソルがある状態で、数式バーの左端にある[▼]をクリックすると、

INDIRECT関数で集計結果を切り替えて表示20 最近使った関数が一覧表示されます。
この一覧の中に「INDIRECT」があれば、クリックで選択します。
(この一覧の中に「INDIRECT」があった方は次の図の、関数を選択するダイアログボックスからINDIRECT関数を選択する操作は不要なので、次の次の図から操作を続けてください。)
もし、一覧の中に「INDIRECT」がない場合には、単純に最近使っていないというだけなので、一覧の一番下にある「その他の関数」をクリックで選択すると、

INDIRECT関数で集計結果を切り替えて表示21 関数を選択するダイアログボックスが表示されるので、この一覧から「INDIRECT」を選択し、[OK]ボタンをクリックします。

INDIRECT関数で集計結果を切り替えて表示22 先ほどまでSUM関数のものだったダイアログボックスが、INDIRECT関数のものに変わり、数式バーに表示されている数式にも、SUM関数の中にINDIRECT関数が入っていることが分かります。

INDIRECT関数で集計結果を切り替えて表示23 それではINDIRECT関数の設定を行っていきましょう。
[参照文字列]欄には、どの文字を、そういう名前のセル範囲として認識してほしいのかを指定します。
今回はB1番地に入力されているものを、そういう名前のセル範囲として認識してほしいわけですから、この欄には「B1」と設定します。
この時、「B1」と手入力しても構いませんし、[参照文字列]欄に文字カーソルがある状態で、

INDIRECT関数で集計結果を切り替えて表示24 実際のB1番地をクリックすれば、手軽に「B1」と設定することができます。
(次の[参照形式]欄は省略します。詳しくは「INDIRECT関数の基本」でご紹介しています。)
最後にダイアログボックス右下の[OK]ボタンをクリックします。

INDIRECT関数で集計結果を切り替えて表示25 B1番地に入力されている名前の付いた範囲の合計を表示することができました!
合計の数式を入力したB2番地を選択した状態で数式バーを見ると、先ほどまとめた通りの数式が入力されていることも確認できます!

スポンサーリンク

平均も考え方は同じ

INDIRECT関数で集計結果を切り替えて表示15 B1番地に入力されている名前の付いた範囲を合計する数式はこうだったわけですが、もし合計ではなく平均を出したいのなら、この数式のSUM関数の部分を、

INDIRECT関数で集計結果を切り替えて表示26 AVERAGE関数に変えればいいだけ。
もちろん数式の設定の仕方も、選択する関数が違うだけで、あとは同じです。
それでは早速、この数式を、

INDIRECT関数で集計結果を切り替えて表示27 B3番地に設定してみることにしましょう!
B3番地を選択し、[関数の挿入]ボタンをクリックします。

INDIRECT関数で集計結果を切り替えて表示28 関数を指定するためのダイアログボックスが表示されます。
この時、AVERAGE関数を選ぶべきなのか、INDIRECT関数を選ぶべきなのか迷っても、「結果として表示させたい関数を先に選ぶ」がポイントになるのは変わりません。
答えとして表示させたいのは、平均なので、平均を計算するAVERAGE関数を選びます。
[関数の分類]で「すべて表示」を選択し、[関数名]欄で「AVERAGE」を選択。
[OK]ボタンをクリックします。

INDIRECT関数で集計結果を切り替えて表示29 前のダイアログボックスで「AVERAGE」を選択して[OK]ボタンをクリックすると、このようなダイアログボックスが表示されます。
この[数値1]欄に平均したい範囲を設定していくわけですが、既にExcelさんが「B1からB2番地の平均を出すんじゃないの?」と気を利かせて範囲を設定してくれています。
ですが今回の場合、平均したい範囲は、B1番地に入力されている名前が付いたセル範囲で、そのセル範囲はINDIRECT関数を使って割り出すわけですから、この[数値1]欄にINDIRECT関数を入れ込んでいくことになります。
というわけで、Excelさんが気を利かして設定してくれた[数値1]欄を消してしまいます。

INDIRECT関数で集計結果を切り替えて表示30 そして、[数値1]欄に文字カーソルがある状態で、数式バーの左端にある[▼]をクリックすると、

INDIRECT関数で集計結果を切り替えて表示31 最近使った関数が一覧表示されます。
先ほど使ったばかりなので、この一覧の中に「INDIRECT」があるはずなので、それをクリックで選択します。
(もし先ほどの合計を出さずにこの操作をしている場合など、この一覧の中に「INDIRECT」がない場合には、単純に最近使っていないというだけなので、一覧の一番下にある「その他の関数」をクリックで選択し、その後に表示されたダイアログボックスで「INDIRECT」を選択し、[OK]ボタンをクリックしてください。)

INDIRECT関数で集計結果を切り替えて表示32 先ほどまでAVERAGE関数のものだったダイアログボックスが、INDIRECT関数のものに変わり、数式バーに表示されている数式も、AVERAGE関数の中にINDIRECT関数が入っていることが分かります。

INDIRECT関数で集計結果を切り替えて表示23 それではINDIRECT関数の設定を行っていきましょう。
[参照文字列]欄には、どの文字を、そういう名前のセル範囲として認識してほしいのかを指定します。
今回はB1番地に入力されているものを、そういう名前のセル範囲として認識してほしいわけですから、この欄には「B1」と設定します。
この時、「B1」と手入力しても構いませんし、[参照文字列]欄に文字カーソルがある状態で、

INDIRECT関数で集計結果を切り替えて表示33 実際のB1番地をクリックすれば、手軽に「B1」と設定することができます。
(次の[参照形式]欄は省略します。詳しくは「INDIRECT関数の基本」でご紹介しています。)
最後にダイアログボックス右下の[OK]ボタンをクリックします。

INDIRECT関数で集計結果を切り替えて表示34 B1番地に入力されている名前の付いた範囲の、平均を表示することができました!
平均の数式を入力したB3番地を選択した状態で数式バーを見ると、先ほどまとめた通りの数式が入力されていることも確認できます!

合計する範囲、平均する範囲を切り替えてみる

INDIRECT関数で集計結果を切り替えて表示35 今回は、B1番地に入力されている名前の付いた範囲の合計や、平均を求める数式を組み立てたので、B1番地の文字を他の店舗の名前に変更し、文字カーソルが表示されなくなるまで[Enter]キーを押して入力を確定すると、

INDIRECT関数で集計結果を切り替えて表示36 その名前の付いた範囲の合計や平均の表示に切り替わります!

INDIRECT関数で集計結果を切り替えて表示37 そして更に工夫を加えて、B1番地の文字をドロップダウンリストで選択できるようにしておけば、もっと手軽に切り替えることができます!

スポンサーリンク