職場のExcel 第1回 indirect関数

 こんにちは、鳥居です。この記事では職場のExcelシリーズと題しまして、私が個人的に職場で悩みながら勉強したExcel関数の使用例を紹介していきます。第一回目は「indirect関数」についてお話しします。

 まず私の職場の業務改善にあたり、前提条件を提示しておきます。
 ・Access、VBA等のプログラム使用の禁止。
 ・仕事のプロセスは初心者でも同じ結果が出せることが前提。
 ・個人しかわからないプロセスは却下。
 ・上記のためその他アプリ等も有料、無料に関わらず要相談。
 これらの制限下でゴールに対してのプロセス効率化を日々検討しています。
 そして当院によくあるのが、「〜.xlsx」を月毎にコピーして、同じレイアウトで数字のみ変更して記録する事例が散見されます。この方式のよくある課題が、せっかく記録しているのにデータが月毎に分かれて推移がわからない → 表に手作業で並び替える作業に時間がかかる→ 数字を間違える、といった定型文のような課題です。

 今回ご紹介するのは「indirect関数」。この関数は引数に指定した文字列のセル参照を返す関数です。これだけ聞いても訳がわかりませんね笑

 実際にセルに打ち込む内容は「=INDIRECT(引数)」です。そして引数に入れる代表例として多いのが、「=INDIRECT(”A1”)」でenterを押すとA1セルの文字を表示する、というものです。
 これだけでは「=A1」でええやん、という話になりますが、この関数それだけではありません。

 この関数が素晴らしいポイント1番目は、なんといってもシートを別ファイルにコピーしても数式にリンクが自動追加されないことです。
 
 この課題の対応策として①次月コピーシートの挿入、②パワークエリで次月コピーシートの参照、③ピボット集計、という流れを作っています。

その記録をもとに所定の計算式に従って集計、もしくは表形式に並べえたい、という要望が出てきます。
「=A1」だと元ファイルを参照するリンクが追加される。「=indirect(”A1”)」だとコピーした先のアドレスを参照してくれる。

②シート名の指定も可能 → ブック内に複数シートがある状態で、A1セルにブック内のシート名を入れておくと、「=indirect(”’”&A1&”’!B1″)」とすることで対象シートのB1セルの文字を返(表示)します。
③範囲指定も可能 → 「A:A」は 別に紹介するoffsetは具体的な範囲の数字指定が必要に対して、指定列範囲、指定行範囲の全てを関数の範囲指定にできる、というポイントです。

「=INDIRECT(“A1”)」と引数に文字列「A1」を指定すると、A1セルの参照を返す。 つまり、「=A1」という数式を記述したのと同じ結果が得られる。

コメントする