CELL 関数は、セルの情報(入っている値の種類・アドレス・表示形式・列幅・ファイル名など)を調べる関数です。=CELL("type",B2) と書くと、B2 が数値なら「v」、文字なら「l」、空白なら「b」が返ります。
1 つ目の引数に、何を調べるか(検査の種類)を文字で入れます。この記事では、よく使う検査の種類と結果を、実際の Excel で確かめた結果で説明します。
CELL 関数の書き方
=CELL(検査の種類, [セル])
| 検査の種類 | 返すもの |
|---|---|
| “type” | 値の種類(v=数値・l=文字・b=空白) |
| “address” | セルのアドレス($B$2 のような形) |
| “row”・”col” | 行の番号・列の番号 |
| “format” | 表示形式の記号(F1・D1 など) |
| “width” | 列幅(整数)と、標準の幅のままか(TRUE・FALSE)の 2 つ |
| “contents” | セルの値 |
| “filename” | ファイルの場所・ファイル名・シート名 |
セルを省略すると、最後に変更したセルの情報になるので、ふつうはセルを指定します。
1. 値の種類を調べる(”type”)
I2 に式を入れて、下へコピーします。
=CELL("type",B2)

数値は v、文字は l、空白は b、日付は v でした。日付は数値(v)として扱われます。
2. アドレスを出す(”address”)
セルの場所を、$ 付きのアドレスで返します。
=CELL("address",B2)

1 つ目は $B$2、4 つ目は $B$5 でした。
3. 表示形式を調べる(”format”)
表示形式は、記号で返ります。
=CELL("format",B2)

#,##0.0 の数値は ,1、文字は G、yyyy/m/d の日付は D1 でした。「,1」はけた区切りで小数 1 けた、「G」は標準、「D1」は日付という意味です。
4. 行・列の番号と列幅を出す
“row”・”col”・”width” をつなげて表示します。“width” は「列幅」と「標準の幅のままか(TRUE・FALSE)」の 2 つの値を返すので、INDEX(…,1) で 1 つ目の列幅だけを取り出します(下の検証)。
=CELL("row",B2)&"行 "&CELL("col",B2)&"列 幅"&INDEX(CELL("width",B2),1)

結果は「2行 2列 幅10」でした。B 列の幅を 10 にしているので、幅は 10 です。
【実機で検証】CELL でつまずくところ

| ためしたこと | 式 | 結果 |
|---|---|---|
| 保存する前のブックの “filename” | =CELL("filename",CELL!A1) | |
| “filename” の文字数 | =LEN(CELL("filename",CELL!A1)) | 0 |
| “contents”(日付のセル) | =CELL("contents",CELL!B5) | 46113 |
| “prefix”(中央ぞろえの文字) | =CELL("prefix",CELL!B3) | ^ |
| “protect”(ふつうのセル) | =CELL("protect",CELL!B2) | 1 |
| 検査の種類を間違えた(”typ”) | =CELL("typ",CELL!B2) | #VALUE! |
| “width” の 2 つ目(B 列) | =INDEX(CELL("width",CELL!B2),2) | FALSE |
保存する前のブックでは、”filename” は空(文字数 0)になりました。ファイル名やシート名を出したいときは、先にブックを保存します。
日付のセルの “contents” は 46113 で、シリアル値(数値)が返りました。”prefix” は配置の記号で、中央ぞろえの文字は「^」です。”protect” はロックされたセルなら 1 です。
検査の種類を “typ” のように間違えると #VALUE! になりました。“width” の 2 つ目の値は FALSE で、列幅を標準から変えているため FALSE になりました。INDEX を付けずに =CELL("width",B2) と書くと、2 つの値が右のセルへスピルします。
よくある質問
シート名をセルに出したいときは?
ブックを保存してから =TEXTAFTER(CELL("filename",A1),"]") と書きます。シートの番号は SHEET 関数で出せます。
数値か文字かを TRUE・FALSE で調べたいときは?
値の種類を番号で調べたいときは?
TYPE 関数で、数値=1・文字=2 のような番号を返せます。

コメント