「ブックにシートが何枚あるか、自動で取得できたらいいのに」と思ったことはありませんか?
シートの枚数をセルに手入力していると、シートを追加・削除するたびに数字を直す手間がかかります。しかもうっかり直し忘れると、集計やリンクがズレてしまいます。
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関数と組み合わせてシートの過不足チェックに使える
シンプルな関数ですが、シート管理の自動化に役立ちます。ぜひ試してみてください。
