# 中級者向け:ADDRESS関数とINDEX関数の組み合わせ活用法
まずは、中級者がすぐに実践できる具体的な関数の活用法をご紹介します。
“`
=INDEX(A:A, ROW(A1))&” – “&ADDRESS(ROW(A1), COLUMN(A1))
“`
このExcel 関数の組み合わせにより、セルの値とそのセルのアドレス(場所)を同時に表示できます。例えば、データベースの行番号が変わる際に、自動的にそのセルの位置情報を取得したい場合に有効です。また、`=INDIRECT(ADDRESS(3,2))`を使うと、3行2列目(つまりB3)のセルを間接的に参照できるため、動的にセル参照を変更する必要がある複雑な集計表で重宝します。
—
##
ポイント1:ADDRESS関数とは?基礎から理解する
ADDRESS関数は、行番号と列番号から、そのセルのアドレス(例:「B5」)を文字列として返す関数です※1。一見すると地味ですが、この関数こそが、Excelの「シート参照を極める」際の重要な鍵となります。
基本形は`=ADDRESS(行番号, 列番号)`で、例えば`=ADDRESS(5,2)`と入力すると「$B$5」という文字列が返されます。初心者が陥りやすい誤解は「この関数だけでは実際のセルの値を取得できない」という点です。しかし、この制限こそが、INDIRECT関数との組み合わせで大きな力を発揮する理由なのです。
私の経験上、ADDRESS関数を使いこなせるかどうかが、Excel 関数の応用スキルを分ける分水嶺になります。なぜなら、複雑な業務では「どのセルを参照するか」そのものが条件によって変わることが頻繁だからです。営業データの月別集計や、複数シートからの自動抽出など、動的な参照が必要な場面では必須の関数となります。
##
ポイント2:INDIRECT関数との組み合わせで実現する動的参照
ADDRESS関数の真価は、INDIRECT関数※2と組み合わせたときに発揮されます。INDIRECTは、文字列で指定されたアドレスを実際のセル参照に変換する関数です。
実践例として、在庫管理表を想定してください。商品コードから自動的に該当する行のデータを取得したい場合、`=INDIRECT(ADDRESS(MATCH(商品コード,検索範囲,0), 列番号))`という方法が有効です※3。MATCHは検索値が何行目にあるかを返す関数で、これとADDRESSを組み合わせることで、「このコードは3行目にあるから、B列の3行目を参照しよう」という判断をExcelに自動実行させることができます。
中級者が陥りやすい罠は「ADDRESS関数の返り値は文字列」という性質を見落とすことです。セル参照が必要な場面でADDRESSの結果をそのまま使用しても動作しません。必ずINDIRECTを経由して、文字列をセル参照に変換する必要があります。この一手間が、Excelの真の柔軟性を引き出すのです。
##
ポイント3:複数シート参照と条件分岐を組み込んだ高度な活用法
さらに上級へ向かうなら、ADDRESS関数は複数シート参照やIF関数との組み合わせで威力を増します。
例えば、売上データが12ヶ月分の異なるシートに分散している場合、月番号を指定することで該当シートの特定セルを自動参照する仕組みが作れます。`=INDIRECT(TEXT(月番号,”00月”)&”!A1″)`のようにADDRESSと組み合わせると、さらに複雑な条件に対応可能です。
また、「このデータが条件を満たす場合は別のセルを参照する」といった条件分岐を組み込むことで、マクロ※4に頼らずVBAなしで複雑な処理が実現できます。私の見解としては、多くの業務は「きちんと設計されたExcel 関数の組み合わせ」で十分に自動化可能であり、わざわざマクロを書く必要がないケースがほとんどです。
ADDRESS関数を極めることで、あなたのExcelスキルは確実に次のレベルへ進みます。毎日の単純作業から解放され、本当に価値のある業務に時間を使えるようになるでしょう。
※1 アドレス:セルがどこにあるか示す位置情報(例:「A1」「B5」)
※2 INDIRECT関数:文字列で書かれたセルの場所を、実際のセル参照に変換する関数
※3 MATCH関数:リストの中から特定の値を探し、何番目にあるかを教える関数
※4 マクロ:Excel作業を自動化するプログラム





