読者です 読者をやめる 読者になる 読者になる

dods’ blog - 今と昔のノートブック

今の記録は情報提供。昔の記憶は話題提供。気ままに記します。

どこにでもいるエクセルの達人 6 INDIRECT

これまで紹介の5つの関数、統一感に欠けますが、実は目的あってのチョイスです。目的云々は後回しにして、もう一つ大事な関数を加えたい。それがINDIRECTです。

INDIRECTの意味は「間接的」。正直言って変な関数です。でも使い方次第で大きな可能性を秘めている。ただその前に「セル参照」という用語を理解しましょう。

セル参照

f:id:dods:20160324221434p:plain

セルA1に文字列Hatenaと入力してある。これを活用したいので、セルB1に =A1 と入力することがセル参照です。返す値は結果的にA1と同じ、Hatenaです。

セルA2には数値2016がを入力してある。この値を計算に使いたいとき、たとえばセルB2に=A2-1000とセル参照を含んだ式を入力すると、1016が得られます。

エクセルなどの表計算ソフトが普及した最大の理由は、セル参照の形式でデータを扱えるからだと言われています。さて、本題のINDIRECT関数についてです。

 INDIRECT

f:id:dods:20160324225838p:plain

A1には文字列Hatenaが入力されています。セルC1には、=A1と入力されています。返す値はHatena。単純なセル参照です。セルC2の値もHatenaですが、入力してあるのは=INDIRECT(B2)。ではB2はというと、A1という文字列が入力してあります。

この場合のINDIRECT関数の働きを順に追うと、まずB2をセル参照し、文字列A1を得る。次に得られた文字列をセル参照=A1に変換する。その結果、返す値はHatenaとなる。書式は次の通りです。

=INDIRECT(参照文字列)

引数は参照文字列ですが、” ”マークはつけないことに注意。INDIRECT("B2")だとB2という文字列をセル参照に変換することになり、=B2と同じになってしまいます。

INDIRECT関数の活用

で、大きな可能性ってなんなの?と聞かれそう。確かにこの関数、単独では使い道がない。でも、多くのデータを、セル範囲を一定に変化させ、集計したい場合には威力を発揮するはずです。次の例は、その月までの入場者の小計を次々計算させた表。

f:id:dods:20160324234858p:plain

一見、入力する式が多そうですが、セルC3を下にコピペ、セルE3を下にコピペするだけ。C列のセル範囲を表した文字列をINDIRECT関数でセル参照に変換させ、SUM関数で合計しているというわけです。ただしこのままだと表が見にくいですね。

非表示

意外と知られていないのは、見せたくない列や行を「非表示」を使って隠す技。関数から離れますが、表示したくない列の列見出し(上のA、Bと並んでいる所)にカーソルを合わせ、右クリックするとメニューに「非表示」が出てきます。

f:id:dods:20160325224239p:plain

 この例で言うと、INDIRECT関数に読み取らせるためのC列は明示する必要はない(それに説明に使ったD列、F列も)。それらを非表示にしたところ、とてもスッキリした表に早変わりしたではありませんか! 列だけでなく、行も非表示できます。

話が長くなりました。今回、エクセルシリーズを始めたのは、かつて自分が挑戦した表集計の課題に挑んで欲しかったからです。これまで説明したエクセルの小技や6つの関数を使って私は解決しました。それ以外には特別なテクニックは使わずに、自分では画期的な解決法を編み出したつもりです。

次回はいよいよ、その課題がどんなものだったのか、説明します。