Excelを操作していると、次のような場面に遭遇することがあります。
- 現在アクティブなセルの位置(列・行番号)を知りたい
- 選択したセルの番地(例:B5)を自動的に表示したい
- マクロや関数で「今どこにいるか」を条件にしたい
こうした場合に役立つのが、セル位置を取得する関数です。
本記事では、Excelで「現在のセルの位置」を取得・表示する方法を、
代表的な関数「ADDRESS」「CELL」「ROW」「COLUMN」などを用いて解説します。
目次
- ✅ Excelで「セル位置を取得する」とは?
- ✅ 方法①:ADDRESS関数でセル番地(アドレス)を取得する
- ・ADDRESS関数の構文
- ・例1:B5のセル番地を取得
- ・例2:絶対参照を解除する
- ・例3:シート名も含めて表示
- ・例4:現在のセル位置を動的に表示
- ・応用例:別セルの位置を参照
- ✅ 方法②:CELL関数で現在のセルの情報を取得する
- ・CELL関数の構文
- ・主な「情報の種類」一覧
- ・例1:現在のセル番地を取得
- ・例2:特定セルの番地を取得
- ・例3:現在の行番号を取得
- ・例4:列番号を取得
- ・例5:ファイル名を取得
- ・応用例:シート名だけを抽出する
- ✅ 方法③:ROW関数・COLUMN関数で行・列番号を取得する
- ・ROW関数とCOLUMN関数の構文
- ・例1:現在の行番号を取得
- ・例2:現在の列番号を取得
- ・例3:別セルの行番号を取得
- ・例4:他の関数と組み合わせる
- ・例5:データ範囲内で動的処理
- ✅ 方法④:現在のセルの位置を動的に表示する応用例
- ・例1:現在セルの位置をラベル表示
- ・例2:指定セルの位置を別セルに表示
- ・例3:セル選択に応じて動的に更新
- ・例4:行と列の両方を表示する
- ✅ 方法⑤:INDIRECT関数で位置に基づいたセル参照を動的生成
- ・INDIRECT関数の構文
- ・例1:セル位置を指定して値を取得
- ・例2:ADDRESS関数と組み合わせ
- ✅ 実務での応用:セル位置を活用した自動化アイデア
- ✅ まとめ:現在のセル位置を取得してExcel操作をもっと効率的に
✅ Excelで「セル位置を取得する」とは?
まず、「セル位置を取得する」とは何を意味するのかを整理しましょう。
Excelでは、セルを「A1」や「C5」のように「列+行」で表します。
このセル番地を取得することを、「セル位置を取得する」といいます。
また、次のように目的に応じて取得方法を変えることができます。
| 目的 | 使用関数 | 取得内容 |
|---|---|---|
| セル番地(例:B5)を取得したい | ADDRESS関数 | 「$B$5」などの文字列形式 |
| 行番号・列番号を取得したい | ROW関数/COLUMN関数 | 数値形式(例:5や2) |
| 現在のセルの情報を取得したい | CELL関数 | アドレスやファイル名などの情報 |
| 選択セルの内容に応じて動的に表示したい | INDIRECT関数+CELL関数 | 現在のセル参照を可変化 |
✅ 方法①:ADDRESS関数でセル番地(アドレス)を取得する
まず紹介するのはADDRESS関数です。
この関数は、指定した「行番号」と「列番号」からセル番地を返します。
・ADDRESS関数の構文
"=ADDRESS(行番号, 列番号, [参照の種類], [シート名])"
・例1:B5のセル番地を取得
"=ADDRESS(5,2)"
→ 結果:「$B$5」
(※列番号2=B列、行番号5=5行目)
・例2:絶対参照を解除する
"=ADDRESS(5,2,4)"
→ 結果:「B5」
第3引数「4」を指定することで、相対参照になります。
・例3:シート名も含めて表示
"=ADDRESS(5,2,1,TRUE,"Sheet1")"
→ 結果:「Sheet1!$B$5」
・POINT
- 数値から番地を生成できるため、動的な参照に便利
- ROW関数・COLUMN関数と組み合わせて「現在位置」を自動表示できる
・例4:現在のセル位置を動的に表示
"=ADDRESS(ROW(),COLUMN())"
→ アクティブセル(式を入れたセル)の番地を自動表示
・応用例:別セルの位置を参照
"=ADDRESS(ROW(A5),COLUMN(A5))"
→ A5の番地「$A$5」を返す。
ADDRESS関数は、「現在のセルの位置を可視化したい」ときに最も直接的な方法です。
✅ 方法②:CELL関数で現在のセルの情報を取得する
次に、CELL関数を使って「現在のセルのアドレスやファイル情報」を取得する方法を見ていきましょう。
・CELL関数の構文
"=CELL(情報の種類, [参照])"
・主な「情報の種類」一覧
| 引数 | 内容 |
|---|---|
| "address" | セルのアドレスを返す(例:"$B$5") |
| "row" | 行番号を返す(例:5) |
| "col" | 列番号を返す(例:2) |
| "filename" | ファイル名とシート名を返す |
| "contents" | セルの内容(値)を返す |
・例1:現在のセル番地を取得
"=CELL("address")"
→ 式を入力したセルの番地(例:"$C$8")を返す。
・例2:特定セルの番地を取得
"=CELL("address",A5)"
→ 「A5」というセルのアドレス「$A$5」を返す。
・例3:現在の行番号を取得
"=CELL("row")"
→ 結果:現在セルの行番号(数値)を返す。
・例4:列番号を取得
"=CELL("col")"
→ 結果:列番号(例:A列なら1、B列なら2)
・例5:ファイル名を取得
"=CELL("filename")"
→ 「ブック名.xlsx」+シート名を含むフルパスを返す。
・POINT
- 引数を省略すると「この式が入ったセル」が対象
- 動的に変わるため、「現在位置表示」に最適
- ファイル名やシート名も取得できるため自動管理に便利
参考:【Excel】シート名の活用完全ガイド|変更・参照・管理・命名ルールまで徹底解説
・応用例:シート名だけを抽出する
"=MID(CELL("filename"), FIND("]", CELL("filename"))+1, 255)"
→ 結果:現在のシート名のみを返す。
参考:【Excel】セル内の文字を検索する関数|部分一致・位置特定・抽出まで完全解説
CELL関数は、現在のセルに関する「メタ情報」を扱える万能関数です。
「アドレス+ファイル情報+位置情報」を一括で取得できるため、
業務報告書や集計テンプレートなどに組み込むと非常に便利です。
✅ 方法③:ROW関数・COLUMN関数で行・列番号を取得する
もし、現在のセルの行番号や列番号だけを知りたい場合は、
ROW関数とCOLUMN関数を使うのがシンプルです。
・ROW関数とCOLUMN関数の構文
"=ROW([参照])"
"=COLUMN([参照])"
・例1:現在の行番号を取得
"=ROW()"
→ 結果:式を入れたセルの行番号
・例2:現在の列番号を取得
"=COLUMN()"
→ 結果:列番号(A列=1、B列=2、C列=3)
・例3:別セルの行番号を取得
"=ROW(A10)"
→ 結果:10
・例4:他の関数と組み合わせる
"=ADDRESS(ROW(),COLUMN())"
→ 現在のセル番地(例:"$B$7")を動的に返す。
・例5:データ範囲内で動的処理
"=INDEX(A1:A100, ROW()-1)"
→ 「1行目」を基準に、行数に応じて値を動的に取得。
・POINT
- シンプルな構造で高速処理
- FILTERやINDEX関数との組み合わせで応用可能
参考:【Excel】「一致したら別のセルの値を返す」方法|IF・VLOOKUP・INDEX関数のガイド - 位置をもとに「自動参照」や「順番付け」に利用できる
✅ 方法④:現在のセルの位置を動的に表示する応用例
ここでは、上記の関数を組み合わせて「現在のセル位置を自動表示」する実用例を紹介します。
・例1:現在セルの位置をラベル表示
"=SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$","")"
→ 結果:「B5」などの番地を返す。
SUBSTITUTE関数で「$」を削除して、見やすく表示。
・例2:指定セルの位置を別セルに表示
"=ADDRESS(ROW(A10),COLUMN(A10))"
→ 結果:「$A$10」
・例3:セル選択に応じて動的に更新
マウスで選択するたびに動的に更新するには、
VBAマクロ+CELL関数を組み合わせる方法が有効です。
たとえば、次のようなマクロを「ワークシートモジュール」に記述します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("D1").Value = Target.Address
End Sub
→ セルを選択するたびに、D1セルに「$B$5」などの現在位置が表示されます。
・例4:行と列の両方を表示する
"="行:"&ROW()&" 列:"&COLUMN()"
→ 結果:「行:5 列:2」などの形式で表示。
これらのテクニックを使うことで、
「現在どこを編集しているか」を視覚的に把握しやすくなります。
✅ 方法⑤:INDIRECT関数で位置に基づいたセル参照を動的生成
INDIRECT関数を使うと、ADDRESSなどで求めた「セル位置」を実際の参照として扱えます。
・INDIRECT関数の構文
"=INDIRECT(文字列)"
・例1:セル位置を指定して値を取得
"=INDIRECT("B"&ROW())"
→ 現在の行のB列の値を取得。
・例2:ADDRESS関数と組み合わせ
"=INDIRECT(ADDRESS(ROW(),COLUMN()-1))"
→ 現在セルの左隣の値を取得。
・POINT
- ADDRESSで位置を文字列として取得
- INDIRECTでその位置を参照化
- 動的参照を実現できるため、自動更新シートに最適
✅ 実務での応用:セル位置を活用した自動化アイデア
| シナリオ | 使用関数 | 効果 |
|---|---|---|
| 入力セルの位置を自動記録 | CELL("address") | 編集履歴・位置管理に |
| 現在行の情報を別列に反映 | ROW/COLUMN | 入力行番号に応じた動作 |
| データ更新時にシート名+セルを表示 | CELL+MID+FIND | ログ管理 |
| 左隣・右隣セルを自動参照 | INDIRECT+ADDRESS | 柔軟な参照制御 |
| マクロと組み合わせて「選択セル表示」 | VBA+CELL | 見える化・支援ツール化 |
✅ まとめ:現在のセル位置を取得してExcel操作をもっと効率的に
Excelで「現在のセル位置」を取得する方法はいくつもありますが、
目的に応じて最適な関数を選ぶことが大切です。
- ADDRESS関数:行・列から番地を作る
- CELL関数:アドレスやファイル名などの情報を取得
- ROW/COLUMN関数:行・列番号を数値で取得
- INDIRECT関数:セル番地を動的に参照
- VBA連携:選択セル位置を自動更新
これらを組み合わせれば、
現在の位置を基準に自動的に動作する「スマートなExcelシート」を構築できます。
特にテンプレート管理やデータ抽出シートなどで、
「どのセルが入力対象か」を明示する仕組みを作っておくと、
入力ミス防止や作業効率の向上に大きく貢献します。