広告

CELL関数の使い方|セルの書式や位置、内容に関する情報を取得する

2022年2月14日

CELL(セル)関数は、指定したセルについての要求した情報を返す関数です。

=CELL(検査の種類, 対象範囲)

cell×sample

参考:CELL関数ドキュメントエディタヘルプ

前回記事:CEILING.PRECISE関数の使い方 - 指定した基準値の最も近い倍数に数値を切り上げる

前回記事
function-CEILING.PRECISE
CEILING.PRECISE関数の使い方 - 指定した基準値の最も近い倍数に数値を切り上げる

CEILING.PRECISE(シーリング・プリサイス)関数は、最も近い整数、または指定した基準値の最も近い倍数に数値を ...

続きを見る

CELL関数の使い方. 構文

CELL関数の構文は以下のとおりです。

=CELL(検査の種類, 対象範囲)

CELL関数の構文内訳

CELL(検査の種類、対象範囲)
項目 説明
検査の種類(必須) リクエストした情報の種類。
対象範囲(任意) 情報が必要なセル。

検査の種類に割当できる値

CELL関数の構文"検査の種類"には、次のいずれかの値を指定することができます。

内容
address 対象範囲の左上にあるセルの書式なしテキストとして、絶対参照を返します。
col 対象範囲のセルの列番号を返します。
contents 対象範囲の左上にあるセルに含まれる値を返します。
prefix 対象範囲のセルに含まれる横方向のテキスト配置に基づいて、テキスト値を返します。単一引用符(')は左揃えのテキスト、二重引用符(")は右揃えのテキスト、カラット(^)は中央揃えのテキスト、空白はその他のテキストに使用されます。
row 対象範囲の左上にあるセルの行番号を返します。
type 対象範囲のセルに含まれるデータの種類を返します。セルが空白なら "b"(blank:空白)、セルに書式なしのテキストが含まれる場合は "l"(label:ラベル)、セルに他のデータの種類が含まれる場合は "v"(value:値)を返します。
width 対象範囲のセルに収まる文字数の単位で列幅を返します。返される数値は、デフォルトのフォントサイズにおけるゼロ(0)文字の幅に基づいて決定されます。これは、Google スプレッドシートが他の場所で使用しているピクセル単位で定義されるセル幅とは異なるため注意が必要。

CELL関数の使い方・実行サンプル

CELL関数にて以下のとおりに設定したときの結果を求めます。

対象セル 検査の種類 種類の概要 CELL関数
結果
A2 addres セルのアドレス =CELL(B2,A2)
A3 col 対象セルの列数 =CELL(A3,B3)
A4 contents 対象セルの値 =CELL(A4,B4)
A5 row 対象セルの行数 =CELL(A5,B5)
A6 type 対象セルのデータ種類 =CELL(A6,B6)

CELL関数で算出した結果。

対象セル 検査の種類 種類の概要 CELL関数
結果
A2 addres セルのアドレス $A$2
A3 col 対象セルの列数 1
A4 contents 対象セルの値 A4
A5 row 対象セルの行数 5
A6 type 対象セルのデータ種類 l

GIFで↓

cell×sample

A列のセルを参照に、B列の情報の種類がCELL関数で表されるようになりました。

OYAKUN
OYAKUN
CELL関数によって、参照されているセルの情報がかんたんに取得できることが分かりますね。

CELL関数のサンプル実行結果

画像でCELLサンプル実行結果を確認↓

Cell_kekka

CELL関数 × GASの使い方・サンプル

CELL関数をGASで利用する際の、かんたんなサンプルを作成してみました。

実装する表のサンプル。

基準値 CELL関数

実装するGAS

function CELL() {
var ss,sht,val01,val02,values,rule,cell
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getActiveSheet();
//前回値を削除
sht.getRange('A2:C2').activate();
sht.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
sht.getRange(2,1).activate();
//セルの値を入力
val01 = Browser.inputBox('対象セルを入力してください。(例:A1)',Browser.Buttons.OK_CANCEL);
if(val01 == "cancel"){
Browser.msgBox("処理を中止しました");
return;
} else {
//各値を記入
sht.getRange(2,1).setValue(val01);
// CEILL関数をセット
val02 = '=iferror(CELL(B2,A2),"B2の検査の種類を選択して下さい")';
sht.getRange(2,3).setValue(val02);
sht.getRange(1,1).activate();
}
//検査種のプルダウンを設置
values = ['address','col','contents','prefix','row','type','width'];
rule = SpreadsheetApp.newDataValidation().requireValueInList(values).build();
cell = sht.getRange("B2");
cell.setDataValidation(rule);
}

実行結果をGIFで

cell×gas

OYAKUN
OYAKUN
検査の対象となるセル番地をA2セルへ入力し、B2セルの検査の種類を選択することで対象セルの検査結果を獲得できます。

CELL関数を使うときの注意点

注意1. 検査の種類に指定外の値を入力すると#VALUE!エラーを返す

CELL関数は、検査の種類に指定外の値を入力すると#VALUE!エラーを返します。

以下にサンプルを記載します。

対象セル 検査の種類 CELL関数の結果
A2 text #VALUE!

cell×error1

OYAKUN
OYAKUN
B2セルに「text」と、検査の種類以外の値を入力したことで、C2のCELL関数の結果がエラー「#VALUE!」を返していることが分かります。

注意2. 検査の種類は引用符("")で囲む

CELL関数では、検査の種類を引用符("")で囲まないと#NAME?エラーを返します。

以下にサンプルを記載します。

対象セル CELL関数の結果
A1 =CELL(address,A2)

cell×error2

OYAKUN
OYAKUN
検査の種類の指定は「address」と合っているものの、引用符("")がないことからCELL結果は#NAMEを返していることが分かります。

注意3. 検査の種類・対象セルの順に指定する

CELL関数では、=CELL(検査の種類、対象セル)の順が守られないと#VALUE!エラーを返します。

以下にサンプルを記載します。

対象セル 検査の種類 CELL関数の結果
A2 address =CELL(A2,B2)
A2 contents =CELL(A3,B3)
A2 type =CELL(A4,B4)

cell×error3

OYAKUN
OYAKUN
CELL関数は、たとえ検査の種類の値が正しくても指定の順番を間違えると#VALUE!エラーを返してしまいます。

CELL関数の使い方. ExcelとGoogleスプレッドシートとの違い

CELL関数は、ExcelとGoogleスプレッドシートで基本的な使い方に相違はありません

しかし、ExcelのCELL関数のほうが検査の種類が多く紹介されています。スプレッドシートとExcelでの検査の種類を比較してみました。

対象セル 検査の種類 対応
A2 address SpreadSheet・Excel
A3 col SpreadSheet・Excel
A4 contents SpreadSheet・Excel
A5 row SpreadSheet・Excel
A6 type SpreadSheet・Excel
A7 prefix SpreadSheet・Excel
A8 row SpreadSheet・Excel
A9 width SpreadSheet・Excel
A10 filename Excelのみ
A11 protect Excelのみ
A12 format Excelのみ
A13 parentheses Excelのみ

次の一覧では、次の引数に使用できるテキスト値info_typeします。

引用:Google - CELL関数

CELL関数の使い方 まとめ

CELL関数の使い方でした。 有効に活用するには、

  • 検査の種類に指定外の値を入力しない
  • 検査の種類を引用符("")で囲む
  • 検査の種類・対象セルの順に指定する

といった感じですね。

GASでもセルの番地やwidth幅、入力された列や行数を取得するときに使えそうな関数です。

OYAKUN
OYAKUN
色々な関数とコラボして威力を発揮する関数だと思います!

関連記事: CEILING.MATH関数の使い方|指定した基準値の最も近い倍数に数値を切り上げる
関連記事: CEILING関数の使い方|値を基準値の倍数に切り上げる
関連記事: BITXOR関数の使い方|数値2つの排他的論理和を求める