ExcelのSHEETS関数の使い方|ブック内のシート数を取得する方法

スポンサーリンク

「ブックにシートが何枚あるか、自動で取得できたらいいのに」と思ったことはありませんか?

シートの枚数をセルに手入力していると、シートを追加・削除するたびに数字を直す手間がかかります。しかもうっかり直し忘れると、集計やリンクがズレてしまいます。

SHEETS関数を使えば、ブック内のシート数を常に自動で取得できます。 この記事では基本の書き方から実務活用パターンまで、まとめて解説します。

ExcelのSHEETS関数とは?読み方と基本の仕組み

SHEETS関数は、ブックに含まれるシートの総数を返す関数です。

読み方は「シーツ関数」です。英語の「sheet(シート)」の複数形がそのまま関数名になっています。Excel 2013以降のすべてのバージョンとMicrosoft 365で使えます。

ここで押さえておきたいポイントが1つあります。SHEETS関数は非表示シートも含めてカウントするという点です。

たとえばブックに「売上」「経費」「設定(非表示)」の3枚があるとします。 =SHEETS() の結果は「3」です。非表示にしていても数に含まれます。

NOTE

似た名前のSHEET関数は「シートの番号」を返す関数です。SHEETS関数は「シートの数」を返します。名前は似ていますが、役割がまったく異なるので注意してください。

SHEETS関数の書き方(構文と引数)

基本構文

=SHEETS([参照])

引数の説明

引数必須/省略可説明
参照省略可シート数を数えたい参照。省略するとブック全体のシート数を返す

参照には、セル範囲や名前定義を指定できます。3D参照(複数シートにまたがる参照)を指定すると、その参照に含まれるシート数を返します。

TIP

引数を省略して =SHEETS() と書くのが最もよく使うパターンです。ブック全体のシート数がそのまま返ります。

ExcelのSHEETS関数の基本的な使い方

引数を省略してブック全体のシート数を取得する

=SHEETS()

引数なしで使うと、ブックに含まれるすべてのシートの枚数を返します。シートを追加すれば自動的に数値が増え、削除すれば減ります。

3D参照で特定のシート範囲の枚数を取得する

=SHEETS(Sheet1:Sheet5!A1)

Sheet1からSheet5までの5つのシートにまたがる3D参照を指定しています。結果は「5」です。途中のシートが非表示でもカウントされます。

名前定義を指定する

名前の定義で「月別データ」という名前をSheet1:Sheet3!A1:A10に割り当てている場合です。

=SHEETS(月別データ)   → 3

名前定義が参照しているシート範囲の枚数を返します。

SHEETS関数の実務活用パターン

SHEETS関数は単体だとシンプルな関数です。でも他の関数と組み合わせると、シート管理を自動化できる場面が出てきます。

パターン1: シートの追加漏れチェック

月別シート(1月〜12月)を使うブックで、12枚そろっているか自動チェックする例です。

=IF(SHEETS()=12, "OK", SHEETS()&"枚(不足あり)")

シートが12枚なら「OK」、それ以外なら「8枚(不足あり)」のように表示されます。シートの追加忘れを防げます。

パターン2: INDIRECT関数と組み合わせてシート一覧を作る

INDIRECT関数と連携して、シート数に応じた連番を振る例です。

=IF(ROW(A1)<=SHEETS(), ROW(A1), "")

この数式を下方向にコピーします。シート数以内の行には連番が入り、超えた行は空白になります。シートを追加すれば連番も自動で伸びます。

パターン3: 集計の完了率を表示する

12枚の月別シートのうち、入力済みのシート数を表示する応用例です。

="進捗: "&COUNTA(Sheet1:Sheet12!A1)&"/"&SHEETS(Sheet1:Sheet12!A1)&"シート完了"

COUNTA関数でA1セルに入力済みのシート数を数え、SHEETS関数で全シート数を取得しています。「進捗: 8/12シート完了」のように表示されます。

パターン4: シート数の変動を検知する

前回のシート数を別セルに記録しておき、変動があったら警告を出す例です。

=IF(SHEETS()<>B1, "シート数が変わりました(現在: "&SHEETS()&"枚)", "変動なし")

B1セルに前回のシート数を入力しておきます。誰かがシートを追加・削除したときに気づけます。

よくあるエラーと対処法

エラー原因対処法
#REF!存在しないシートや名前定義を参照した参照先のシートが存在するか確認する
#NAME?関数名のスペルミス(SHEETSの末尾のSを忘れた等)=SHEETS() のスペルを確認する
#VALUE!引数に無効な値を指定したセル範囲または名前定義を正しく指定する
非表示シートが含まれる非表示シートもカウント対象可視シートだけ数えたいときはVBAを使う

TIP

SHEETS関数で最も多い間違いは、SHEET関数(単数)と混同して使うことです。シートのを知りたいならSHEETS、シートの番号を知りたいならSHEETを使い分けてください。

SHEET関数との違い・使い分け

SHEETS関数とSHEET関数の比較

SHEETS関数とSHEET関数は名前が似ていて混同しやすいです。それぞれの違いを表で整理します。

項目SHEETS関数SHEET関数
返すものシートの(枚数)シートの番号(位置)
引数省略時ブック全体のシート数現在のシートの番号
引数の型参照(3D参照・名前定義)シート名・参照・名前定義
戻り値の例5(ブックに5枚)3(左から3番目)
使用場面シート枚数の管理・チェックシートの並び順を取得

どちらを使うべき?

  • シートが全部で何枚あるかを知りたい → SHEETS関数
  • このシートは左から何番目かを知りたい → SHEET関数

たとえば「12枚のシートがそろっているか確認」ならSHEETS関数です。「現在のシートが何番目か表示」ならSHEET関数を使います。

組み合わせて使うパターン

SHEETS関数とSHEET関数を組み合わせると、「最後のシートかどうか」を判定できます。

=IF(SHEET()=SHEETS(), "最後のシートです", SHEETS()-SHEET()&"枚先にまだシートがあります")

SHEET関数で現在のシート番号を取得し、SHEETS関数でシート総数と比較しています。

まとめ

SHEETS関数は、ブックに含まれるシートの枚数を返す関数です。

  • =SHEETS() でブック全体のシート数を取得できる
  • 引数に3D参照を指定すると、その範囲のシート数を返す
  • 非表示シートもカウント対象に含まれる
  • SHEET関数はシートの「番号」、SHEETS関数はシートの「数」を返す
  • IF関数と組み合わせてシートの過不足チェックに使える

シンプルな関数ですが、シート管理の自動化に役立ちます。ぜひ試してみてください。

関連記事

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