ExcelのSHEET関数の使い方|シート番号取得と実務活用

スポンサーリンク

「このシートって左から何番目だっけ?」と、手作業で数えた経験はありませんか?

シートが10枚、20枚と増えてくると、目視で順番を確認するのは手間がかかります。非表示シートがあると、正確な番号を把握するのはさらに大変です。

ExcelのSHEET関数を使えば、シートの番号を数式で自動取得できます。 この記事では引数の4パターンを比較表で整理し、SHEETS関数との違いやエラー対処法まで解説します。

ExcelのSHEET関数とは?できることをおさらい

SHEET関数は、指定したシートの番号(位置)を返す関数です。「このシートはブック内で左から何番目にあるか」を数値で教えてくれます。

Excel 2016以降のすべてのバージョンとMicrosoft 365で使えます。

SHEET関数はExcelの情報関数カテゴリに分類されます。同じカテゴリには、Excelのバージョンや動作環境を取得できるINFO関数があります。

SHEET関数の読み方・基本構文

読み方は「シート関数」です。英語の「sheet」がそのまま関数名になっています。

=SHEET([値])

引数の「値」は省略できます。省略した場合は、数式を入力したシートの番号を返します。

シート番号の仕組み(左から1,2,3…非表示シートも含む)

シート番号は、タブの左端から順に1, 2, 3…と割り振られます。固定IDではありません。シートを並べ替えたり追加・削除したりすると、番号も変わります。

ここで注意したいのが、非表示シートもカウントに含まれる点です。通常の非表示シートだけでなく、VBAで設定するVery Hidden(完全非表示)シートもカウント対象です。たとえば3枚のシートがあり、2番目が非表示の場合でも番号は1, 2, 3です。非表示だからといって飛ばされることはありません。

SHEET関数の使い方|引数4パターン比較

SHEET関数は引数の指定方法が4種類あります。まず一覧で確認し、それぞれ詳しく見ていきましょう。

パターン数式の例返す値
引数を省略=SHEET()現在のシート番号
シート名を指定=SHEET(売上)「売上」シートの番号
セル参照で指定=SHEET(Sheet2!A1)Sheet2の番号
テーブル名・名前定義=SHEET(売上テーブル)テーブルがあるシートの番号

引数を省略する(現在シートの番号を取得)

=SHEET()

最もシンプルな使い方です。数式を入力したシートの番号が返ります。たとえば左から3番目のシートに入力すれば、結果は「3」です。

シート名を直接指定する

=SHEET(売上)

シート名をそのまま引数に入力します。ダブルクォーテーション(”)で囲む必要はありません。 「売上」シートが左から2番目にあれば、結果は「2」です。

シート名にスペースが含まれる場合も同様です。たとえば「売上 月別」というシート名でも、そのまま =SHEET(売上 月別) と入力できます。

セル参照で指定する

=SHEET(Sheet2!A1)

別シートのセルを参照する形式です。参照先のシートの番号が返ります。セルの値ではなく、セルが存在するシートの位置を取得するのがポイントです。

テーブル名・名前付き範囲で指定する

=SHEET(売上テーブル)

テーブル名や名前の定義(ブックスコープ)を指定できます。そのテーブルや名前が存在するシートの番号を返します。

ただし、シートスコープの名前定義を指定すると#NAME?エラーになります。名前の定義を使う場合は、スコープがブック全体になっているか確認してください。

SHEET関数とSHEETS関数の違い

SHEET関数とSHEETS関数は名前が似ていて混同しやすい関数です。役割はまったく異なるので、しっかり区別しておきましょう。

一目でわかる比較表

項目SHEET関数SHEETS関数
何を返す特定シートの番号(位置)参照範囲内のシート総数
引数省略時現在のシート番号ブック全体のシート総数
非表示シートカウントに含むカウントに含む
主なエラー#REF! / #N/A / #NAME?#REF!
用途例このシートは何番目?このブックに何枚ある?

使い分けの判断基準

  • シートの「位置」を知りたい → SHEET関数
  • シートの「枚数」を知りたい → SHEETS関数

たとえば「現在のシートが左から何番目かを表示したい」ならSHEET関数です。「ブックにシートが全部で何枚あるか確認したい」ならSHEETS関数を使います。

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

SHEET関数は単体でもシート番号を取得できます。他の関数と組み合わせると、さらに便利に活用できます。

INDIRECT関数と組み合わせてシートを動的参照する

SHEET関数が返すのは数値(番号)です。INDIRECT関数(文字列をセル参照に変換する関数)はシート名の文字列が必要なので、直接組み合わせることはできません。

実務では、シート名の一覧をセルに用意しておく方法がよく使われます。A列にシート名の一覧があるとします。

=INDIRECT("'"&INDEX(A:A,SHEET())&"'!B1")

SHEET関数で現在のシート番号を取得し、INDEX関数でA列からシート名を引き当てています。INDIRECT関数がそのシート名を使ってB1セルを動的に参照します。

シートの並び順を数式でチェックする

シートが想定どおりの順番になっているか確認する例です。

=IF(SHEET()=SHEETS(), "最後のシートです", "残り"&SHEETS()-SHEET()&"枚")

SHEET関数で現在の番号を取得し、SHEETS関数の総数と比較しています。「最後のシートです」や「残り3枚」のように表示されます。

SHEET関数のエラーと対処方法

SHEET関数で表示されるエラーは主に3種類です。原因と対処法をそれぞれ確認しましょう。エラーの詳細はエラー値の種類と対処方法も参考にしてください。

#N/Aが表示される原因と解決策

原因: 存在しないシート名を引数に指定した場合に発生します。

=SHEET(受注)   → シート「受注」が存在しなければ #N/A

対処法: シート名のスペルを確認してください。タブに表示されている名前と完全に一致している必要があります。スペースの有無や全角・半角の違いにも注意しましょう。

#REF!が表示される原因と解決策

原因: 数式が参照しているシートが削除された場合に発生します。

もともと存在していたシートを参照する数式を作成した後で、そのシートを削除すると#REF!になります。

対処法: 削除したシートを復元するか、数式の参照先を修正してください。IFERROR関数で囲んでおくと、エラー時に代替値を表示できます。

#NAME?が表示される原因と解決策

原因: スコープがシート限定の名前定義を引数に指定した場合に発生します。

=SHEET(シートスコープの名前)   → #NAME?

対処法: 「数式」タブの「名前の管理」でスコープを確認してください。「ブック」スコープの名前定義に変更すると解決します。

まとめ

SHEET関数は、シートの番号(左からの位置)を返す関数です。

  • =SHEET() で現在のシート番号を取得できる
  • 引数にはシート名・セル参照・テーブル名を指定できる
  • シート名にダブルクォーテーションは不要
  • 非表示シートもカウント対象に含まれる
  • SHEETS関数はシートの「枚数」、SHEET関数はシートの「番号」を返す

INDIRECT関数との組み合わせなど、応用の幅も広い関数です。ぜひ活用してみてください。

関連記事

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