【関数】指定したセルから任意の情報を取得できる「CELL」の使い方
AさんAさん

たまにセルの番地やフルパス名等の情報を使えたら、もっと自動化できそうな気がしますが、そんな関数ありますかね?

森田森田

その場合は、関数のCELLを活用することで実現できますよ!
では、CELLの使い方について解説していきますね。

はじめに

この記事は関数の概要を把握していることが前提です。

参考記事

関数の概要については以下の記事をご参照ください。

指定したセルの各種情報を利用したい場合は「CELL」が有効

関数でセルの情報を利用する場合、その対象のほとんどは「値」です。

しかし、セルの値以外の情報を利用したい場合もあるもの。

たとえば、セル番地やフルパス名等です。

こうした情報を他の関数の引数として使うことで、より高度な処理が可能になります。

フルパス名であれば、文字列操作関数と組み合わせ、フルパス名からブック名やシート名等を抽出する等のイメージです。

このようにセルの各種情報を取得したい場合、関数のCELLを使いましょう。
CELLは「セル」と読む。

CELLを使うことで、指定したセルから任意の情報を取得できます。

CELLの構文

CELLの構文は以下の通りです。

=CELL(検査の種類,[参照])
シートの読み取り順で、参照の最初のセルの書式設定、位置、内容に関する情報を返します。

引数名 必須 データ型 説明
検査の種類 文字列 セルから取得したい情報の種類を文字列で指定します。
参照 参照 情報の取得対象の単一セルやセル範囲を指定します。

引数「参照」を省略した場合、再計算時のアクティブセルを対象にCELLの戻り値が表示。
※この仕様を踏まえ、引数「参照」は省略せず単一セルを指定することを推奨。

引数「検査の種類」に「format」を指定後、別の表示形式を設定する場合、CELLの戻り値を更新するには、ワークシートの再計算(「F9」キー押下等)が必要。
引数「検査の種類」に指定する内容が「address」、「col」、「contents」、「row」、「type」以外は、Web版やアプリ版のExcelではエラー値「#VALUE!」が表示。

【参考】引数「検査の種類」のパターン

引数「検査の種類」は任意の文字列を選択しましょう。

CELLの関数名をセットすると、数式上でサジェストされるため、任意の種類を選択し「Tab」キーで確定しましょう。

各検査の種類がどの情報を示すかは以下の表をご覧ください。

検査の種類 戻り値(取得できる情報)
address 対象範囲の左上隅にあるセル番地を表す文字列。 
col 対象範囲の左上隅にあるセルの列番号。
color 対象セルに負の数を色で表す書式が設定されている場合は「1」、それ以外の場合は「0」。
contents 対象範囲の左上隅にあるセルの値(数式ではない)
filename 対象範囲を含むファイルのフルパス名(文字列)
※保存されていない新規ブックの場合、空白文字列("")を表示。
format 対象セルの表示形式に対応する文字列定数。
※詳細は本記事下部「CELLの使用結果イメージ」参照。
parentheses 対象セルに正の値またはすべての値をカッコ()で囲む書式が設定されている場合は「1」、それ以外の場合は「0」。
prefix 対象セルの文字の配置に対応する文字列定数。
※詳細は本記事下部「CELLの使用結果イメージ」参照。
protect 対象セルがロックされている場合は「1」、ロックされていない場合は 「0」。
row 対象範囲の左上隅にあるセルの行番号。
type 対象セルの値の種類に対応する文字列定数。
width 対象セルの列の幅。
なお、戻り値は以下2列の配列となる。

  • 1列目:列の幅を示す整数(小数点以下は四捨五入)
  • 2列目:規定の幅かを示す論理値(規定値は「TURE」、それ以外は「FALSE」)

【参考】CELLは「情報関数」

あくまで参考情報となりますが、CELLはリボン「数式」タブの関数ライブラリの「情報」に分類されています。

実際にCELLを活用する際は、以下で解説しているように直接入力で挿入していきましょう。

CELLの使用結果イメージ

CELLで対象セルの情報を取得するイメージを、引数「検査の種類」のパターン別にまとめました。

address:セル番地

引数「検査の種類」に「address」を指定した場合、対象範囲の左上隅のセル番地を表す文字列が戻り値となります。

上記では、A2~A11のセル範囲を指定したため、左上隅のA2セルが戻り値です。

実際は、「$A$2」のように絶対参照の形式で表示されます。

col:列番号

引数「検査の種類」に「col」を指定した場合、対象範囲の左上隅にあるセルの列番号を表す数値が戻り値となります。

上記では、A2~A11のセル範囲を指定したため、左上隅のA2セルの列番号「1」が戻り値です。
A列が1列目。

color:負の数を色で表す書式

引数「検査の種類」に「color」を指定した場合、対象セルに負の数を色で表す書式が設定されている場合は「1」、それ以外の場合は「0」が戻り値となります。

上記では、B~F列それぞれ4~11行目を対象にCELLに指定した結果、D~F列が「1」になっています。

ちなみに、「負の数を色で表す書式」とは、「#,##0;[]-#,##0」のように表示形式のユーザー定義で「;[]」が含まれるものです。
表示形式の確認方法:対象セル上で右クリック→「セルの書式設定」をクリック

セミコロン(;)を使うことで、値が正か負かで表示形式を別に指定できます(セミコロン(;)の左側が正の値、右側が負の値)。

また、表示形式に[]のように色を指定すると、フォントの色を可変にすることが可能です。

contents:セルの値

引数「検査の種類」に「contents」を指定した場合、対象範囲の左上隅にあるセルの値が戻り値となります。

上記では、A2~A11のセル範囲を指定したため、左上隅のA2セルの値「B001」が戻り値です。

左上隅のセルの値に応じて戻り値のデータ型も変わります(「B001」は文字列)。

filename:フルパス名

引数「検査の種類」に「filename」を指定した場合、対象範囲を含むファイルのフルパス名を表す文字列が戻り値となります。

上記では、A2セルが存在するシート名までのフルパス名が表示されました。
フルパス名=フォルダーパス+ブック名+シート名

ちなみに、フルパス名のうち、シート名以外はエクスプローラー側で確認できます。

OneDrive配下に格納したブックの場合、フルパス名はURL形式(https://~)で表示。

format:表示形式

引数「検査の種類」に「format」を指定した場合、対象セルの表示形式に対応する文字列定数が戻り値となります。

なお、文字列定数は上記の通り複数種類があります。

表示形式(一例) 戻り値(文字列定数)
G/標準
# ?/?
# ??/??
G
0 F0
0.00 F2
#,##0
#,##0;-#,##0
$#,##0_);($#,##0)
,0
#,##0;[赤]-#,##0
$#,##0_);[
]($#,##0)
,0-
#,##0.00
$#,##0.00_);($#,##0.00)
,2
#,##0.00;[赤]-#,##0.00
$#,##0.00_);[
]($#,##0.00)
,2-
¥#,##0;¥-#,##0 C0
¥#,##0;[赤]¥-#,##0 C0-
¥#,##0.00;¥-#,##0.00 C2
¥#,##0.00;[赤]¥-#,##0.00 C2-
0% P0
0.00% P2
0.E+00 S0
0.00E+00 S2
yyyy/m/d
yyyy"年"m""d""
yyyy/m/d h:mm
d-mmm-yy
m/d/yy
D1
mmm-yy D2
d-mmm D3
ge.m.d
ggge"年"m""d""
D4
h:mm:ss AM/PM D6
h:mm AM/PM D7
h:mm:ss
h"時"mm""ss""
D8
h:mm
h"時"mm""
D9

セルが負数に対応する色で書式設定されている場合、文字列定数の末尾に「-」が付く。
正数またはすべての値をカッコ()で囲む書式がセルに設定されている場合、結果の文字列定数の末尾に「()」が付く。

ちなみに、具体的な表示形式を確認する場合は、ユーザー定義の「種類」ボックスの内容を確認しましょう。

parentheses:カッコ()で囲む書式

引数「検査の種類」に「parentheses」を指定した場合、対象セルに正の値またはすべての値をカッコ()で囲む書式が設定されている場合は「1」、それ以外の場合は「0」が戻り値となります。

上記では、A2A3セルをそれぞれ対象にCELLに指定した結果、A2セルのみ「1」になっています。

ちなみに、「カッコ()で囲む書式」とは、「(0);[](0)」のように表示形式のユーザー定義でカッコ()で正の値またはすべての値を囲っているものです。

(0);[](0)」は正と負の両方をカッコ()で囲っていますが、正だけを囲った「(0);[]0」でも戻り値は「1」となります。

こうした表示形式はデフォルトで用意されていないため、自分でユーザー定義を追加する必要があります。
負の値のみカッコ()で囲っているものはデフォルトに存在。

prefix:文字の配置

引数「検査の種類」に「prefix」を指定した場合、対象セルの文字の配置に対応する文字列定数が戻り値となります。

なお、文字列定数は上記の通り複数種類があります。

文字の配置(横位置) 戻り値(文字列定数)
左揃え
両端揃え
均等割り付け
'
右揃え "
中央揃え
選択範囲内で中央
^
繰り返し \
それ以外 空白文字列(””

ちなみに、文字の配置の詳細は、「セルの書式設定」ダイアログの「配置」タブの「横位置」ボックスで確認できます。
文字の配置の確認方法:対象セル上で右クリック→「セルの書式設定」をクリック→「配置」タブをクリック

protect:セルのロック

引数「検査の種類」に「protect」を指定した場合、対象セルがロックされている場合は「1」、ロックされていない場合は「0」が戻り値となります。

上記では、A2A3セルをそれぞれ対象にCELLに指定した結果、A2セルのみ「1」になっています。

ちなみに、セルはデフォルトではロックされています。

シートの保護を設定し、入力可能なセルにしたい場合はこのロックを解除していることがあります。

セルがロックされているか否かは、「セルの書式設定」ダイアログの「保護」タブの「ロック」のチェックがON/OFFで確認できます(チェックON=ロックされている)。
セルのロックの確認方法:対象セル上で右クリック→「セルの書式設定」をクリック→「保護」タブをクリック

row:行番号

引数「検査の種類」に「row」を指定した場合、対象範囲の左上隅にあるセルの行番号を表す数値が戻り値となります。

上記では、A2~A11のセル範囲を指定したため、左上隅のA2セルの行番号「2」が戻り値です。

type:値の種類

引数「検査の種類」に「type」を指定した場合、対象セルの値の種類に対応する文字列定数が戻り値となります。

なお、文字列定数は上記の通り複数種類があります。

セルの値 戻り値(文字列定数)
文字列 l
Lavelの頭文字
空白 b
Blankの頭文字
それ以外 v
Valueの頭文字

=””」等の数式で空白にした場合は文字列扱い(戻り値=l)となる。

width:列の幅

引数「検査の種類」に「width」を指定した場合、対象セルの列の幅を表す数値と規定の幅かを示す論理値の配列が戻り値となります。
スピル環境(Excel2021以降またはMicrosoft365)なら1つの数式で1行×2列の配列が返る。
Excel2019以前のバージョンでは、1行×2列の配列数式にしない限りは列の幅のみ表示。

上記では、B1F1セルをそれぞれ対象にCELLに指定した結果、1列目(B2F2セル)は両方とも「8」です(B1セルの列の幅「8.28」の小数点以下は四捨五入)。

なお、2列目はC2セルが「TRUE」、G2セルが「FALSE」となっています。

これは、ワークシートの列の幅の規定値が「8.28のため、B1セルだけが規定値になっているという意味です。

ちなみに、列の幅の詳細は、「列の幅」ダイアログの「列の幅」ボックスで確認できます。
列の幅の確認方法:対象セルの列番号上で右クリック→「列の幅」をクリック

列の幅の規定値は変更可能(リボン「ホーム」タブをクリック→「書式」をクリック→「規定の幅」をクリック→任意の幅を入力→「OK」をクリック)。

参考記事

配列数式の詳細は以下の記事をご参照ください。

CELLの数式の挿入手順

上記の結果を得るための手順は以下の通りです。

  1. 関数を挿入するセルを選択
    ※今回はA2セル
  2. =c」等と入力
  3. サジェストから「CELL」を選択し、「Tab」キーで確定
  4. サジェストから任意の種類を選択
    ※今回は「filename
  5. コンマ(,)を入力
  6. 取得対象のセル or セル範囲を選択
    ※今回はA2セル
  7. Enter」キーで確定

手順②の際にIMEを半角英数モードにすること。

【応用】文字列操作関数と組み合わせれば、ブック名やシート名を取得できる

実務でCELLを使うケースで多いのは、フルパス名からブック名やシート名を取得することです。

この場合、MIDFIND等の文字列操作関数と組み合わせれば対応可能です。

参考記事

CELL+文字列操作関数でフルパス名からブック名/シート名を取得するテクニックの詳細は以下の記事をご参照ください。

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_ワークシート関数_CELL.xlsx

サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります(上記リンクから登録フォームへ遷移します)。

ブックを開いたら、「filename」シートで次の手順を実施してください(今までの解説のまとめです)。

  1. 関数を挿入するセルを選択
    ※今回はA2セル
  2. =c」等と入力
  3. サジェストから「CELL」を選択し、「Tab」キーで確定
  4. サジェストから任意の種類を選択
    ※今回は「filename
  5. コンマ(,)を入力
  6. 取得対象のセル or セル範囲を選択
    ※今回はA2セル
  7. Enter」キーで確定

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

CELLは指定したセルの各種情報を利用したい際に役立つ関数です。

特に、ブック名やシート名を取得したいケースが実務にあれば、覚えると良いでしょう。

なお、CELL以外にもExcel関数の各種テクニックを拙著で解説していますので、こちらも参考にしてみてください。


ご参考になれば幸いですm(_ _)m

森田森田

CELLは多機能ですが、実務で活用するイメージがなかなか湧かない種類の情報が多いです。
よって、CELLは基本的に無理して覚える必要はありません。
ただし、ブック名やシート名を取得したい場合は、MIDFIND等の文字列操作関数とセットで覚えると良いですね。