スプレッドシートのCELL関数の使い方|info_type 7種類とINDIRECT連携まで完全解説

スポンサーリンク

「いま参照しているセルの番地を、文字列として数式の中で使いたい」「データの種類によって計算式を切り替えたい」

そんなときに役立つのがCELL関数です。セル番地・行列番号・データ型・列幅といった「セルの情報」を、関数1本で取り出せます。

この記事では、GoogleスプレッドシートのCELL関数の使い方を、info_type 7種類の戻り値から実務応用、Excelとの差分まで実例付きで整理します。

スプレッドシートのCELL関数とは?

CELL関数(読み方:セル)は、指定したセルの情報を取り出す関数です。

「どんな情報がほしいか」を info_type で切り替えながら、1本の関数で複数の用途に使えるのが特徴です。

CELL関数で取得できる代表的な情報は、次の4種類です。

  • セル番地($A$1 のような絶対参照の文字列)
  • 行番号・列番号(数値)
  • データ型(空白・文字列・数値の判別)
  • 列幅(整数)

たとえば、=CELL("address", B3) と書けば $B$3 という文字列が返ります。この結果を INDIRECT関数 に渡せば、動的にセル参照を組み立てられます。

NOTE

GoogleスプレッドシートのCELL関数は、Excelに比べて使える info_type が少なめです。"filename""format" などはスプレッドシートでは非対応で、シート名取得やセル書式の取得には別の方法が必要になります。詳しくは「Excelとの違い」セクションで解説します。

CELL関数の構文と引数

基本構文

=CELL(info_type, [参照])

引数の説明

引数必須/任意説明
info_type必須取得したい情報の種類を文字列で指定する
参照任意情報を取得したいセル。省略するとアクティブセルが対象

info_type は必ずダブルクォーテーションで囲んで指定します。=CELL("address", A1) のように、第1引数を文字列として渡すのがポイントです。

TIP

第2引数の参照を省略すると、アクティブセル(選択中のセル)が対象になります。結果が再計算のタイミングで揺らぐので、参照は明示的に指定するのがおすすめです。

info_type 7種類の戻り値と使い分け

GoogleスプレッドシートのCELL関数で使える info_type は、次の7種類です。

info_type戻り値の例用途
"address"$B$3絶対参照の文字列でセル番地を取得
"col"3列番号(A=1, B=2, …)を整数で取得
"row"5行番号を整数で取得
"type"b / l / vデータ型(空白・文字列・数値)を1文字で取得
"width"8セルが属する列の幅を整数で取得
"contents"セルの値参照セルの中身をそのまま返す
"prefix"' " ^ など文字列の配置記号(左揃え・右揃え・中央揃え)を取得

NOTE

第2引数に範囲(例:A1:C10)を渡すと、範囲の左上セルだけを対象とした結果が返ります。すべてのセルについて情報を取りたいときは ARRAYFORMULA との組み合わせが必要です。

type が返す3種類の値

"type" を指定したときに返る1文字には、それぞれ意味があります。

戻り値意味具体例
bblank(空白セル)セルが空のとき
llabel(文字列)"東京" "商品A" など
vvalue(数値)100、日付(シリアル値)、TRUE/FALSE

日付やTRUE/FALSEは内部的に数値として扱われるため、v が返る点は覚えておくと便利です。

CELL関数の基本的な使い方

ここからは info_type 別に、よく使うパターンを順に見ていきます。

セル番地を絶対参照の文字列で取得する(address)

=CELL("address", B3)

結果は $B$3 です。文字列として返るので、INDIRECTやVLOOKUPの引数に組み込みやすい形です。

行番号・列番号を取得する(row / col)

=CELL("row", A5)

結果は 5 です。

=CELL("col", C1)

結果は 3 です。

行番号や列番号だけがほしい場合は、ROW関数 / COLUMN関数のほうがシンプルに書けます。CELL関数を使うメリットは、address や type など他の情報と統一的に扱える点にあります。

データ型を1文字で判別する(type)

=CELL("type", A1)

セルの中身に応じて b / l / v のいずれかが返ります。「このセルにデータが入っているか」「文字列か数値か」を数式で判定したいときに役立ちます。

列幅を整数で取得する(width)

=CELL("width", A1)

A1が属する列の幅を整数で返します。レイアウトのチェックや、列幅に応じた表示制御を組みたいときに便利です。

セル値をそのまま返す(contents)

=CELL("contents", A1)

参照セルの値をそのまま返すだけなので、=A1 と書くのとほぼ同じ結果になります。CELL関数の引数の動作確認用に覚えておくとよいでしょう。

CELL関数の実践的な活用パターン

ここからは、CELL関数を他の関数と組み合わせた実務向けの応用例を紹介します。

INDIRECTと組み合わせて動的にセル参照を組み立てる

CELL関数で取得した行番号を使い、参照先を動的に切り替えるパターンです。

=INDIRECT("B" & CELL("row", A2))

A2と同じ行のB列の値を返します。A2の行位置が変わっても、CELL関数が現在の行番号を返してくれるので参照が追従します。

集計表の「同じ行の別カラムを参照したい」シーンで便利な書き方です。

データ型に応じて処理を分岐する

セルが数値か文字列かで計算を切り替えたい場面で使えます。

=IF(CELL("type", A2)="v", A2*1.1, "数値以外")

A2が数値(v)のときだけ1.1倍の計算を行い、それ以外なら「数値以外」と表示します。

データの入力ミスチェックや、混在データの前処理にも応用できます。

ARRAYFORMULAでデータ型を一括取得する

CELL関数は単独だと範囲を渡しても左上セルしか返しませんが、ARRAYFORMULAで包むと配列処理に対応できます。

=COUNTIF(ARRAYFORMULA(CELL("type", A1:A20)), "<>b")

A1:A20の各セルについてデータ型を取得し、空白(b)以外の個数をカウントする式です。

TIP

単純に空白以外の個数を数えるだけなら COUNTA関数 のほうがシンプルです。CELL関数を使うメリットは、文字列のみ・数値のみといったデータ型の絞り込みカウントができる点にあります。

条件付き書式でデータ型をハイライトする

文字列が混入しているセルだけ色を付けたい、といった場面で使えます。

  1. 対象範囲を選択する
  2. メニュー「表示形式」→「条件付き書式」を開く
  3. 「カスタム数式」を選ぶ
  4. 数式欄に =CELL("type", A1)="l" と入力する
  5. 背景色などのフォーマットを設定する

数値列のはずのセルに文字列が紛れ込んだとき、視覚的にすぐ気づける仕組みになります。

CELL関数のExcelとの違いと代替手段

GoogleスプレッドシートのCELL関数は、Excelに比べて対応する info_type が少ないのが大きな違いです。

info_typeExcelGoogleスプレッドシート
"address"対応対応
"col"対応対応
"row"対応対応
"type"対応対応
"width"対応対応
"contents"対応対応
"prefix"対応対応
"filename"対応非対応
"format"対応非対応
"color"対応非対応
"protect"対応非対応
"parentheses"対応非対応

特に影響が大きいのは、次の2つです。

  • "filename" 非対応: ブックのファイル名やシート名を直接取得できません。シート名がほしい場合は、Apps Script で SpreadsheetApp.getActiveSheet().getName() を呼び出すカスタム関数を作るのが現実的な代替策になります
  • "format" 非対応: セルの表示形式コードを取得できません。表示形式によって処理を変えたい場合も Apps Script の利用が必要です

ExcelのCELL関数の使い方は、ExcelのCELL関数の使い方|セルの書式・位置・ファイル名を取得する方法で詳しく解説しています。Excel側の挙動を確認したい方はあわせて参考にしてください。

よくあるエラーと対処法

症状原因対処法
#VALUE! エラーが出るinfo_type のスペル誤り(例:"adress""address"d は2つ。スペルを正確に書く
#VALUE! エラーが出るスプレッドシートで非対応の info_type を使った"filename" "format" などは非対応。7種類の対応リストを確認する
値が更新されないCELL関数は揮発性関数だが再計算が遅れることがあるセルを再編集する、またはシートを再読み込みする
範囲を渡したのに1つだけ返る仕様:参照に範囲を指定すると左上セルだけが対象1セルずつ指定するか、ARRAYFORMULAで配列化する
"type" で日付が v になる日付はシリアル値(数値)として管理されるため日付判定は ISDATE関数を使う
"prefix" が空文字になる文字列に配置プレフィックスが付いていない明示的に ' などを付けたセルのみ意味のある値が返る

まとめ

GoogleスプレッドシートのCELL関数は、セル番地・行列番号・データ型などの情報を1関数でまとめて取り出せる便利な関数です。

ポイントを整理します。

  • 構文は =CELL(info_type, [参照])。info_type には取得したい情報の種類を文字列で指定する
  • 使える info_type は7種類("address" "col" "row" "type" "width" "contents" "prefix"
  • "address" は INDIRECT との組み合わせで動的なセル参照を実現できる
  • "type" でデータ型を判別すると、計算式の分岐や入力ミス検出に応用できる
  • 範囲を渡すと左上セルしか返らないので、配列処理は ARRAYFORMULA で包む
  • ExcelのCELL関数では使える "filename" "format" などはスプレッドシートでは非対応。代替手段は Apps Script
  • 行番号・列番号だけなら ROW関数 / COLUMN関数 のほうがシンプル

まずは =CELL("address", A1) でセル番地を取得するところから試して、INDIRECTとの組み合わせまで広げてみてください。


関連記事

タイトルとURLをコピーしました