【Googleスプレッドシート最新関数】SHEET関数、SHEETS関数 どう使う?
2026年2月、Googleスプレッドシートに2つの新しい関数
SHEET関数
SHEETS関数
が追加されました。
正直「ひゃっほーい!」と喜ぶような便利で斬新な関数とは言えないんですが、せっかく久しぶりの新関数ですし、他の関数とはちょっと違う独特な挙動なんで取り上げておこうと思います。
前回のnoteは モニター1つでもWeb会議(GoogleMeet や Zoom、Teams)で、GoogleスライドやPowerPointをプレゼンテーションモードで共有するQuick Tips を紹介しました。
Googleスプレッドシートをはじめとした、Google Workspace関連の Quick Tips(小ネタ)をマガジンにまとめております。
新関数 SHEET関数、SHEETS関数の概要

まずは新関数の概要を紹介しましょう。
新たに追加された2つの関数 SHEET関数、SHEETS関数は、どちらもシートに関する数値を返す関数です。
【注意】2026年2月時点 関数の候補に SHEET関数、SHEETS関数は出てきません(でも使えます)
2026年2月末現在は =SHEE とセルに途中まで入力しても、SHEET関数やSHEETS関数が候補に表示されません。(2026年3月には既に解消済みです)

=S まで入力した段階だと色々関数候補が出るけど

=SH まで入力すると関数候補がでない・・・
これはいずれ解消されると思いますが、 =SHまで入力して 候補に出てこないから、自分のアカウントではまだSHEET関数が使えないと勘違いしないようにご注意ください。
とりあえず適当なセルに引数無しで
=SHEET()
と入れて数値が返ればSHEET関数、SHEETS関数は使える状態 になっています。
※2026年3月時点、SHEET関数、SHEETS関数が関数候補に表示されるようになりました

SHEET関数

それぞれの関数の概要を理解しましょう。
SHEET関数はシート名で指定、または参照した範囲があるシートのシート番号(左から何番目か?)を数値で返す関数です。
👆上の画像では、 =SHEET("シート3") という式で シート3の位置である 3(左から3番目) を返しています。
※GASと違って 1始まりなので混乱しないように
👇公式
SHEET(value)
SHEET関数は、一つの引数が指定可能で

シート名の文字列や、セル範囲の参照、テーブル、名前付き範囲を入れることが出来ます。
引数省略時は、そのSHEET関数の式が入っているシートの位置を返します。

SHEETS関数

SHEETS関数はその式が入っているスプレッドシート(ブック)のシートの枚数を返す関数です。
👆上の画像では、 =SHEETS() という式で 7 (シート1からシート7 まで合計7シートある)を返していることがわかります。
👇公式
SHEETS()
SHEETS関数は公式を見ると、引数が取れるように見えるんですが・・・


実際には引数を入れるとエラーになるので注意です。

これについては関数の公式ページではなく、アップデートブログの方に明記されてます。

混乱するので修正して欲しいものです。
実はExcelからの輸入関数
今回Googleスプレッドシートに追加された SHEET関数、SHEETS関数は実はExcelでは Excel2013の時代から存在する関数です。
使いどころが微妙なため、Excelユーザーでも知らないって人が多いかもしれません。
互換性の為なのかもしれませんが、なんで今頃輸入したのか?謎です。
SHEET関数、SHEETS関数どちらも仕様はGoogleスプレッドシートのものとほぼ一緒ですが、一点だけ

Excelの方のSHEETS関数は 引数に参照をとることができます。
=SHEETS(Sheet1:Sheet4!A1)
👆このように3D参照(串刺し)した場合に、このシート範囲内にあるシートの枚数を返します。
画像のケースだと Sheet1からSheet4までの間にあるシート数なので 4となっています。
Googleスプレッドシートは複数シートの3D参照が出来ない為、この仕様が輸入されなかったってことでしょう。(なぜか公式の関数ページには載ってしまってますが・・・)
👇Microsoft公式はこちら
SHEET関数、SHEETS関数は 無料のWeb版Excelでも利用可能です。(3D参照との組み合わせもOK)

Googleスプレッドシート SHEET関数、SHEETS関数 検証
2つの新関数をもう少しディープに検証してみましょう。理解を深めることで面白い使い方がひらめくかもしれません。
シートの移動、追加、削除、名前の変更の反映
SHEET関数、SHEETS関数の最大の特徴は シートに関する操作を検知して再計算されるという点です。
シートの移動

👆SHEET関数で指定しているシート1をドラッグ&ドロップで移動すると、左側で表示している =SHEET("シート1!") の結果である数値(シート位置)が、リアルタイムで変化しているのがわかります。
シートの追加

シートを追加すると、シート枚数が増えるので SHEETS関数の結果が増加します。
またSHEET関数で位置を取得しているシートの左側にシートを追加すると相対的に順番(位置)が一つ右にずれるので、SHEET関数の結果も増加します。

また、事前にまだ存在しないシート名をシート関数で参照させる式
=SHEET("シート11")
を入れた場合、存在しないシートを参照する為、#REF!エラーとなりますが、この状態でシートを追加でシート11が生成されると、ほぼリアルタイムでエラーが解消され 新しく生成されたシート11の位置 2を返すようになります。
シートの削除
シートの削除に関しても同様です。


シートの名前の変更

シート名を変更した場合は 少しだけ勝手が違います。
シート名を "シート1" から "シート1a" に変更した場合
=SHEET("シート1") → 即 #REF!エラーに
=SHEET('シート1'!A1) → =SHEET('シート1a'!A1) 即変更が反映
=SHEET("シート1a") → #REF!エラーのまま 反映され
存在しないシートを 文字列で指定してエラーとなっていた =SHEET("シート1a") は、シート名の変更で シート1aとしても 即時反映されずエラーが解消されません。

別の関係ないシートを動かすことでSHEET関数が再計算され、エラーが解消されました。
ここから、
シートの追加、削除、移動
全 SHEET関数、SHEETS関数が再計算される
シートの名前変更
引数で指定または参照しているSHEET関数のみ再計算される
と推察されます。
シートの表示 / 非表示は影響しない

SHEET関数、SHEETS関数の結果は、シートの表示・非表示には影響されません。
👆上のGIF動画では、シート1aの左側にあると2つのシートを非表示にしました。
2枚のシートを非表示にしたことで、見た目上はシート1aは一番左、表示されているシート数は 6枚になりましたが、
=SHEETS() → 結果 8
=SHEET("シート1a") → 結果 3
とSHEET関数、SHEETS関数の結果は変化せず、それぞれ
SHEETS関数 ・・・ 非表示のシートを含めた全シートの枚数
SHEET関数 ・・・ 非表示のシートを含めて一番左から数えたシートの位置
を返しているのがわかります。
シート名をセルに記述して参照する

SHEET関数の特徴の一つが、シート名の文字列でシート位置を探索できるという点です。たとえば、
=SHEET("シート3")
とすれば、ブック内のシート名一覧から シート3をサーチして、左から3番目にあれば 3という数値を返します。
この シート3 を別のセルに記述したり、プルダウン指定で参照できれば、より便利ですよね。

しかし A2に シート3と 記述して B2セルに =SHEET(A2) と式を入れた場合、SHEET関数は A2に書かれた シート3というテキストを引数とするのではなく、A2セルという参照を 引数として見てしまいます。
その為、この参照している A2セルがあるシート、つまり式を入れた シート7のシート位置 7を返します。
これを回避するには SHEET関数の引数を参照返しではない、値とすればよいので

=SHEET(A2&"")
とか
=SHEET(TO_TEXT(A2))
といった式にすればOK。
これで SHEET関数にA2のセル内にある値を渡すことが出来るので、A2セルに記述した シート名のシート位置を返すことが出来ます。
SHEET関数をスピル式にする

SHEET関数は ARRAYFORMULA関数と組み合わせてもスピルしません。
だから
✖ =ARRAYFORMULA(SHEET(A2:A6&""))
こんな式を書いても結果が返るのは先頭の シート1の位置だけです。
このようなARRAYFORMULAが効かないタイプの関数をスピらせるには、LAMBDAヘルパー関数を利用します。
今回のように引数が1つでセルを1つずつ参照して処理をすればよい場合は、MAP関数が適しています。

=MAP(A2:A6,LAMBDA(v,SHEET(v&"")))
こんな式でシート名が1列に並んだ範囲の隣に一気にシート位置を返すことが出来ます。

もちろん1つずつ式を入れた時と同じようにシート移動や削除、追加が、即反映され数値が変わります。
SHEET関数、SHEETS関数のスマホ アプリ版対応
2026年2月末時点では、SHEET関数、SHEETS関数はモバイルアプリ版スプレッドシートでは利用できません。
PCブラウザで入力したSHEET関数、SHEETS関数の結果はそのまま表示されますが、アプリ側で新しくSHEET関数を入力しても #NAME?エラーとなってしまいます。


今後の対応に期待しましょう。
SHEET関数、SHEETS関数 どう使うか?【ちょい応用例】
せっかくの新関数 SHEET関数、SHEETS関数を活用していきたいところでうが 、正直「どう使うか?」悩ましいところです。
シート番号でシートを取得できるSHEETINDEX関数があれば、もしくはシート名やシートID(gid)を返す関数があれば
シートの枚数やシートの位置の数字もらっても・・・って感じなんですよね。
SHEET関数はシートにおけるMATCH関数、
SHEETS関数はシートにおけるCOUNTA関数
と言えますが、その後他の関数と絡めたいい処理が思いつきません。
GASのように getSheets() で全シートの配列が取得できて、そこからindex指定でシートを参照できるような SHEETINDEX関数でもあれば、
MATCH関数 + INDEX関数 のように
SHEET関数 + SHEETINDEX関数(空想上の関数です)
みたい組み合わせで便利になりそうですが。。
個人的には シート名からシート位置の数字を返す関数では無く、数字(シート位置)を引数として シート名を返す、もしくは gid(シートID)を返す関数が欲しかった。。
シート名が分かれば INDIRECT関数と組み合わせて参照できますし、gidがわかればHYPERLINK関数と組み合わせて指定のシートにジャンプ出来るんですけどね。
結局シート周りの処理は、引き続きGASによるカスタム関数を使うことになりそうです。
ボヤいても仕方ないので、今あるカードでどう工夫できるか?を考えてみましょう!
お題形式にはしませんが、数式チャレンジしたい人は 先を見る前に自力で式を考えてみてください。
1. 各シートにページ番号のようにシート番号 〇/〇を表示させる

とりあえず思いつくのは、こんな感じで各シートの同じ位置のセルに ページ番号みたいに シート番号 n/m(全m枚中、n枚目のシート)という表示を入れる使い方でしょうか。
SHEET関数、SHEETS関数の両方を使う簡単な式です。これは大丈夫ですね?

=SHEET()&"/"&SHEETS()
こんな式を入れればOKです。
注意点としては&"/"&で連結して文字列化することです。
そのまま / を入れると割り算として計算されて 4枚目は 4/8 = 0.5 と小数表示になりますし 、これを分数表示にしても 4/8 = 1/2 と約分されてしまいます。
約分させない数値のまま分数表示させるテクニックもありますが、今回はシンプルに文字列化しちゃってよいでしょう。
この関数はどのシートでも使えるので、各シートにコピペするか、先にこれを入れたシートをコピーして複製するだけでOK。
並び順の変更やシートの追加、削除に連動してくれます。
2. SHEET関数でシート名検索

100枚以上の大量にシートがあるスプレッドシート(ブック)だと、該当のシートがどこにあるのか?目視で探すのはなかなか大変です。
そんな時、SHEET関数で
=SHEET(A1&"")
とすることで、A1に入れた名前のシートがどこ(何枚目)にあるかを表示させることが出来ます。
ただ、👆の画像のように62と出たところで62枚目のシートに簡単には飛べませんし、

ワイルドカードの利用や「含む」(部分一致)が出来ないので、検索としては微妙です。。
3. シートが勝手に操作されたことをわかるようにする

複数人でシートを共有してユーザーに入力してもらう場合、シートの保護をすることで、誤操作によるシートの削除やシート名変更、シートの並び替え、シートの追加を ある程度防止することが出来ます。
しかし全シートを保護しても 編集者に対して完全にシート操作を防止することは出来ず、ブラウザからの操作であれば シートの新規追加は防止出来ますが、

なぜかシートのコピーは出来てしまいます。

さらにアプリ版はシート保護がザル仕様で、保護したシートの削除やシート名の変更は防止できるんですが

シートの追加や

シートの移動が出来てしまうという・・・。

今回追加されたSHEET関数、SHEETS関数を使うことで、これらのユーザーの勝手なシート操作(削除、移動、追加、コピー、名前変更)を防止は出来ませんが、数式で検知(FALSE表示を出す)は出来るようになりました。

ユーザーがシートのコピーを作成すると 左側のシートのC2セルが FALSEに変化したのがわかりますね。

同じくスマホアプリ版の操作に対しても、シート移動を検知してFALSEに切り替わっています。
前提として事前にシートの並び順通りにシート名を記述した範囲(画像だと A1:A5)を用意しておく必要があり、その点は手間です。
範囲 A1:A5を 参照してシート操作を検知する数式が

=LET(x,A1:A5,AND(MAP(x,LAMBDA(v,
IFERROR(SHEET(v&""))=XMATCH(v,x))),COUNTA(x)=SHEETS()))
👆これです。
COUNTA(x)=SHEETS() で、シート数の変化(シートの追加やシートコピー、削除)を検知して FALSEを返します。
シートの移動、シート名変更のチェックが
MAP(x,LAMBDA(v,IFERROR(SHEET(v&""))=XMATCH(v,x)))
この部分です。シート名変更やシート削除の場合、SHEET関数がエラーとなるのを回避する為に IFERROR関数でネストしています。
全体をAND関数で括ることで、式の結果が返す配列や引数のブール値に1つでもFALSEがあれば FALSEを返す(なんらかのシート操作があった)と判定します。
さすがに数式や機能だけでは FALSEになった時に通知を飛ばすといったことは出来ないので 定期的な目視確認が必要となりますが、GASが使えない環境であれば割と有効な方法じゃないでしょうか。
4. シートの並び替え、削除、シート名変更に対応した シート目次を 数式で作成する
これもぶっちゃけGAS使った方が簡単なんですが、どうしてもGASが使えない場合の手段として、シートの並び替えや削除、シート名変更に対応射できる目次(リンク無し)をSHEET関数を使った数式で生成できます。
👇シートの並び替えに連動

👇シートの削除に連動

👇シート名の変更に連動

残念ながらシートの追加には数式では対応出来ませんが、これがGASなし、SHEET関数を使った数式で実現できます。
ただし、作業セルに別の数式を入れて下準備をする必要があります。

まずシート名変更と連動させる為に
=REGEXEXTRACT(CELL("address",'佐藤 太'!A1),"^'(.+?)'!")
各シートのA1セルの参照を CELL関数で第1引数を "address" として テキスト化します。

この '佐藤 太'!$A$1 から正規表現を使ってシート名部分だけを REGEXEXTRACT関数で取り出します。

この式を下に目次シートを除くシートの数だけコピーして

CELL関数内の参照部分をそれぞれのシートに置き換えます。ここは手動なんで面倒。

これでシート名の変更に連動した シート名の一覧(現時点での並び順)が用意できました。
この作業セル範囲 C2:C5を参照して目次生成数式を作ります。

={"目次";
LET(x,C2:C5,TOCOL(SORT(x,MAP(x,LAMBDA(v,SHEET(v&""))),1),2))}
並び替え対応がSORT関数を使った
SORT(x,MAP(x,LAMBDA(v,SHEET(v&""))),1)
この部分です。

MAP+SHEET関数で取得したシート位置の数値の昇順をキーとして、x(作業セル範囲のシート名一覧)を並び替えることで、シート移動に対応させています。

さらにこれを TOCOL関数で 第2引数を 2(エラーを無視)とすることで、シートが削除され 作業セルの結果がエラーとなった項目を除外しています。
以上、無理やりですが SHEET関数、SHEETS関数の応用例でした。
今回のSHEET関数、SHEETS関数が、シート操作で再計算される仕様をGASで作ったシート一覧を取得するカスタム関数 と組み合わせると面白うそうだなと色々試したんですが、思うような再計算になりませんでした。
カスタム関数と組み合わせたいい感じのSHEET関数、SHEETS関数の使用方法が発見できたら、別途noteで紹介したいと思います。
👇その後、使えそうな活用方法を見つけたので別noteで紹介しています
シート関連の関数は今後に期待!
今回は2026年2月 Googleスプレッドシートに追加された新関数 SHEET関数、SHEETS関数を紹介しました。
正直、使いどころは微妙ですが久々の追加関数という Googleスプレッドシートの関数周りに動きがあったのは喜ばしいことです。
シート周りは gidを返す関数 や 3D集計(シートの串刺し)といった機能の拡充など今後に期待したいですね!
次回はまた Quick Tipsの予定です。
いいなと思ったら応援しよう!
チップ大歓迎です。やる気がアップしますw