「このセルの表示形式って何が設定されてるんだろう?」「ファイルのパスやシート名を数式で取得できないかな?」
こんな疑問を持ったことはありませんか。セルの書式や位置、ファイル名といった”裏側の情報”を手作業で確認するのは面倒ですよね。ExcelのCELL関数を使えば、こうした情報を数式ひとつで取得できます。
この記事では、CELL関数の基本的な使い方から12種類の検査の型の一覧、実務で役立つ活用パターンまでまとめて紹介します。
この記事は次のような人におすすめ
– セルの表示形式や書式を数式で調べたい
– ファイル名やシート名を自動取得したい
– セルの位置情報(行番号・列番号・アドレス)を取得したい
ExcelのCELL関数とは?
読み方・語源
読み方は「セル関数」です。英語の「cell(細胞・区画)」が語源で、Excelの「セル」と同じ意味ですね。
CELL関数でできること
CELL関数は、指定したセルの書式・位置・内容などの情報を取得する関数です。
たとえば「ファイル名を取得したい」「セル番地を文字列で取りたい」といった場面で使います。取得したい情報の種類は「検査の型」という引数で切り替えますよ。
NOTE
CELL関数は Excel 2003 以降のすべてのバージョンで使えます。Microsoft 365 でも同じ書き方で動作します。
CELL関数の書き方(構文と引数)
基本構文
=CELL(検査の型, [参照])
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 検査の型 | 必須 | 取得したい情報の種類を文字列で指定(例: "address", "filename") |
| 参照 | 省略可 | 情報を取得するセルの参照。省略するとアクティブセルが対象 |
「検査の型」は必ずダブルクォーテーションで囲みます。=CELL("address", A1) のように書いてください。
NOTE
参照に範囲(例:
A1:C10)を指定した場合は、範囲の左上のセルの情報だけが返ります。範囲全体の情報をまとめて取得することはできないので注意してくださいね。
CELL関数の検査の型一覧表
CELL関数では、12種類の検査の型を使い分けます。用途別に3つのグループに分けて整理しました。
セルの位置情報を取得する型
| 検査の型 | 戻り値 | 使用例 |
|---|---|---|
"address" | セル番地を文字列で返す(例: $A$1) | =CELL("address", B3) → $B$3 |
"col" | 列番号を返す | =CELL("col", C1) → 3 |
"row" | 行番号を返す | =CELL("row", A5) → 5 |
セルの書式・属性を取得する型
| 検査の型 | 戻り値 | 使用例 |
|---|---|---|
"format" | 表示形式に対応する文字列コードを返す(詳細は後述) | =CELL("format", A1) → "G" |
"color" | 負の数を色付き表示する書式なら 1、それ以外は 0 | =CELL("color", A1) → 0 |
"protect" | セルがロックされていれば 1、されていなければ 0 | =CELL("protect", A1) → 1 |
"parentheses" | 正の値をかっこで囲む書式なら 1、それ以外は 0 | =CELL("parentheses", A1) → 0 |
"prefix" | 文字列の配置に応じた記号を返す(詳細は後述) | =CELL("prefix", A1) → ' |
セルの内容・ファイル情報を取得する型
| 検査の型 | 戻り値 | 使用例 |
|---|---|---|
"contents" | セルの値をそのまま返す | =CELL("contents", A1) → セルA1の値 |
"filename" | ファイルのフルパスを返す。未保存なら空文字 | =CELL("filename", A1) → C:...[Book1.xlsx]Sheet1 |
"type" | 値の種類を1文字で返す(b=空白, l=文字列, v=数値) | =CELL("type", A1) → "v" |
"width" | 列幅を整数で返す | =CELL("width", A1) → 8 |
基本的な使い方
ここからは、よく使う検査の型を実際の数式で確認していきましょう。
セル番地を取得する(address)
=CELL("address", B3)
結果: $B$3
セル番地が絶対参照の文字列として返ります。この結果をINDIRECT関数に渡せば、動的なセル参照を実現できますよ。
TIP
行番号だけ、列番号だけがほしい場合は
"row"や"col"を使いましょう。ADDRESS関数のように参照形式を切り替える機能はありませんが、番号を取得するだけなら十分です。
ファイル名とシート名を取得する(filename)
=CELL("filename", A1)
結果の例: C:UsersuserDocuments[売上データ.xlsx]4月
ファイルのフルパスが返ります。フォルダパス、ファイル名、シート名がまとめて1つの文字列になっているのがポイントです。
シート名だけを抜き出したい場合は、次の数式を使います。
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)
] の位置を FIND関数(文字列の検索位置を返す関数)で探して、その右側を MID関数で取り出しています。複数シートの管理表を作るときに重宝しますよ。
NOTE
ファイルが未保存(新規ブック)の場合は空文字
""が返ります。ファイルを一度保存してから使ってくださいね。
表示形式を調べる(format)
=CELL("format", A1)
セルの表示形式に対応するコード文字列が返ります。たとえば標準なら "G"、パーセントなら "P0" です。
「どんな書式が設定されているか、数式で判定したい」ときに使えます。条件付き書式やVBAを使わずに書式チェックができるので便利ですよ。
実務で使える活用パターン
パターン1: シート名+日付でヘッダーを自動生成する
月別シート(4月、5月、6月…)の帳票で、ヘッダーに「4月度 売上報告(2026/03/22更新)」のような文字列を自動表示したいことがありますよね。
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)&"度 売上報告("&TEXT(TODAY(),"yyyy/mm/dd")&"更新)"
シート名と更新日が自動で反映されるので、手動でヘッダーを書き換える手間がなくなります。TEXT関数と組み合わせれば、日付の表示形式も自由に変更できますよ。
パターン2: 表示形式で日付かどうかを判定する
数値セルに「日付形式」が設定されているかどうかを判定する例です。
=IF(LEFT(CELL("format",A1),1)="D","日付形式","日付以外")
"format" の戻り値が "D" で始まれば日付形式です。「この列は日付なのか数値なのか」を自動判定したいときに活用してみてください。
パターン3: セルがロックされているか確認する
シートの保護をかける前に、ロック設定を一覧で確認したいときに使えます。
=IF(CELL("protect",A1)=1,"ロック済み","ロック解除")
保護をかけたあとに「あれ、このセルは入力できるようにしたはず」というトラブルを防げますよ。
パターン4: ファイルパスをフォルダ・ファイル名・シート名に分解する
CELL関数の "filename" の結果を3つの部分に分解するテクニックです。
フォルダパス: =LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)
ファイル名: =MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)
シート名: =MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)
[ と ] の位置を基準にして切り分けています。ファイル管理表を作るときにまとめて使うと便利ですよ。
formatの戻り値一覧
=CELL("format", 参照) で返るコード文字列の一覧です。表示形式ごとに異なるコードが返ります。
数値・通貨系
| 表示形式 | 戻り値 | 説明 |
|---|---|---|
| 標準 | G | デフォルトの表示形式 |
0 | F0 | 小数なし |
0.00 | F2 | 小数2桁 |
#,##0 | ,0 | 桁区切り・小数なし |
#,##0.00 | ,2 | 桁区切り・小数2桁 |
$#,##0_);($#,##0) | C0 | 通貨・小数なし |
$#,##0_);赤 | C0- | 通貨・負の数が赤 |
$#,##0.00_);($#,##0.00) | C2 | 通貨・小数2桁 |
$#,##0.00_);赤 | C2- | 通貨・負の数が赤 |
0% | P0 | パーセント・小数なし |
0.00% | P2 | パーセント・小数2桁 |
0.00E+00 | S2 | 指数表示 |
# ?/? または # ??/?? | G | 分数 |
日付・時刻系
| 表示形式 | 戻り値 | 説明 |
|---|---|---|
m/d/yy m/d/yy h:mm mm/dd/yy | D4 | 日付(スラッシュ区切り) |
d-mmm-yy dd-mmm-yy | D1 | 日付(英語月略称) |
d-mmm dd-mmm | D2 | 日付(日-月のみ) |
mmm-yy | D3 | 日付(月-年) |
mm/dd | D5 | 日付(月/日のみ) |
h:mm AM/PM | D7 | 時刻(12時間制) |
h:mm:ss AM/PM | D6 | 時刻(12時間制・秒あり) |
h:mm | D9 | 時刻(24時間制) |
h:mm:ss | D8 | 時刻(24時間制・秒あり) |
TIP
戻り値が
Dで始まっていれば日付・時刻系の書式です。LEFT(CELL("format",A1),1)="D"で日付かどうかを判定できますよ。
prefixの戻り値一覧
=CELL("prefix", 参照) で返る記号の一覧です。セル内の文字列の配置(文字寄せ)に対応しています。
| 文字の配置 | 戻り値 | 記号の名前 |
|---|---|---|
| 左詰め | ' | シングルクォーテーション |
| 右詰め | " | ダブルクォーテーション |
| 中央揃え | ^ | キャレット |
| 両端揃え | | バックスラッシュ |
| 文字列以外のデータ | (空文字) | – |
NOTE
"prefix"はセルに文字列が入っているときだけ配置記号を返します。数値や数式の結果が入っているセルでは空文字が返りますよ。
よくあるエラーと注意点
エラーと対処法
| 症状 | 原因 | 対処法 |
|---|---|---|
#VALUE! エラー | 検査の型のスペルミス(例: "adress") | 正しいスペルを確認してください。"address" の d は2つです |
| 空文字が返る | "filename" で未保存ファイルを参照した | ファイルを一度保存してから再計算してください |
| 値が更新されない | 手動計算モードになっている | Ctrl + Shift + F9 で強制再計算するか、自動計算モードに切り替えてください |
| 範囲を指定したのに1つしか返らない | 参照に範囲を指定すると左上セルの情報だけ返る仕様 | セルを1つずつ指定してください |
"type" で "v" が返るのに計算できない | 日付シリアル値も "v"(数値)として扱われる | 日付かどうかは "format" の戻り値で判定してください |
使うときの注意点
CELL関数を使うときに知っておきたいポイントを3つ紹介します。
- 揮発性関数であること: シート上のどこかが変更されるたびに再計算されます。大量に使うとExcelの動作が重くなることがあるので、必要なセルだけに絞って使いましょう。
- 参照を省略するとアクティブセルが対象になる: セルを選択するたびに結果が変わります。参照は明示的に指定しておくのがおすすめです。
- 書式変更だけでは結果が更新されないことがある:
F9キーで再計算するか、Ctrl + Shift + F9で強制再計算してみてください。
似た関数との違い・使い分け
CELL関数に似た機能を持つ関数がいくつかあります。「どれを使えばいいの?」と迷ったときの判断基準をまとめました。
CELL関数 vs TYPE関数
| 比較項目 | CELL関数 | TYPE関数 |
|---|---|---|
| 目的 | セルの書式・位置・内容などの総合情報を取得 | セルのデータ型だけを判別 |
| 戻り値 | 検査の型ごとに文字列・数値が変わる | 数値コード(1=数値, 2=文字列, 4=論理値, 16=エラー, 64=配列) |
| データ型の判別 | "type" で大まかに判別(b/l/vの3種類) | 5種類を細かく判別 |
| 使い分け | セルの「書式」「位置」「ファイル名」が必要なとき | セルの「データの種類」を正確に知りたいとき |
TIP
データ型を詳しく調べたいならTYPE関数がおすすめです。CELL関数の
"type"は空白・文字列・それ以外の3分類しかできません。
CELL関数 vs ADDRESS関数
| 比較項目 | CELL関数 | ADDRESS関数 |
|---|---|---|
| セル番地の取得 | "address" で既存セルの番地を文字列で取得 | 行番号と列番号を指定して番地を生成 |
| 参照形式の指定 | 絶対参照のみ($A$1形式固定) | 絶対・相対・混合を自由に切り替え可能 |
| シート名の付加 | 不可 | 第5引数でシート名を指定可能 |
| 使い分け | 既存セルの情報を調べたいとき | 行列番号からセル番地を組み立てたいとき |
CELL関数 vs ROW関数・COLUMN関数
行番号・列番号を取得するだけなら、ROW関数やCOLUMN関数のほうがシンプルです。
=CELL("row", A5) '→ 5(CELL関数で行番号)
=ROW(A5) '→ 5(ROW関数で行番号)
結果は同じですが、ROW関数のほうが短く書けます。CELL関数は「行番号以外の情報も同時に使う場面」で選んでみてください。
まとめ
ExcelのCELL関数は、セルの書式・位置・ファイル名などの情報を取得する関数です。
- 12種類の「検査の型」で取得する情報を切り替える
"filename"でファイルパスとシート名を取得できる"format"でセルの表示形式コードを判定できる"address"/"row"/"col"でセルの位置情報を取得できる- 揮発性関数なので、大量に使うとパフォーマンスに影響する
データ型を詳しく判別したい場合はTYPE関数、行列番号からセル番地を生成したい場合はADDRESS関数もあわせてチェックしてみてください。
