スプレッドシートで名前付き範囲を活用している方の中には、複数のシートから同じ名前で値を参照したいと考える方も多いでしょう。しかし、名前付き範囲には「スコープ」という概念があり、これを理解していないと思わぬエラーに見舞われることがあります。この記事では、名前付き範囲のスコープの仕組みと、複数シートで名前を再利用する方法を解説します。スコープを正しく設定すれば、シートをまたいだデータ参照がスムーズになるはずです。
【要点】名前付き範囲のスコープと複数シート参照のポイント
- スコープの種類: 名前付き範囲にはワークブックスコープとシートスコープの2種類があります。
- 再利用の方法: 同じ名前を異なるシートでローカルスコープとして定義すれば、各シート固有の値を保持できます。
- 参照時の注意: 名前だけで参照する場合、スコープにより優先される定義が異なります。必要に応じてシート名を明示しましょう。
ADVERTISEMENT
目次
名前付き範囲のスコープとは
名前付き範囲には必ず「スコープ」が設定されています。スコープとは、その名前が有効な範囲を指します。スコープが「ワークブック」の場合はブック全体で一意の名前となり、どのシートからでもその名前で参照できます。一方、スコープが「シート」(特定のシート)の場合は、そのシート内でのみ有効な名前となり、別のシートでは同じ名前を別の範囲に定義できます。この仕組みを理解することが、複数シートでの名前付き範囲の再利用の鍵となります。
例えば、シート1とシート2にそれぞれ「売上」という名前をシートスコープで定義すると、各シートで異なる範囲を参照できます。一方、ワークブックスコープで「売上」を定義すると、ブック全体で一つの定義しか持てず、別のシートで同じ名前を使おうとするとエラーになります。このように、スコープの選択によってデータ管理の柔軟性が大きく変わります。
実際の業務では、月次シートごとに「売上」や「経費」といった名前付き範囲を用意し、集計シートからそれらを一括で参照したいケースが多くあります。スコープをシートに設定することで、各シートのデータを同じ名前で管理でき、数式の可読性が向上します。逆に、共通の定数(消費税率など)はワークブックスコープにして全シートで共有するのが適切です。
複数シートで名前付き範囲を設定する手順
ここでは、名前付き範囲をシートスコープで作成し、複数シートで同じ名前を再利用する手順を説明します。また、既存のスコープを変更する方法も併せて解説します。
新しい名前付き範囲をシートスコープで作成する
- メニューから名前付き範囲を開く
メニューバーの「データ」をクリックし、「名前付き範囲」を選択します。画面右側にペインが表示されます。 - 新しい名前を追加する
ペイン下部の「新しい名前付き範囲を追加」をクリックします。名前欄に任意の名前を入力します。ここでは「売上」とします。 - 範囲を指定する
「範囲」欄のシートアイコンをクリックし、適用したいセル範囲を選択します。または直接「シート1!$A$2:$A$100」のように入力します。 - スコープを「シート」に設定する
「スコープ」のドロップダウンから「シート」を選び、対象のシート名(例:シート1)を選択します。これでシート1内でのみ有効な名前付き範囲が作成されます。 - 完了する
「完了」ボタンをクリックして登録します。
同様の手順をシート2、シート3でも行い、同じ「売上」という名前をそれぞれのシートスコープで定義します。これで各シートに固有の「売上」範囲が設定されます。
既存の名前付き範囲のスコープを変更する
- 名前付き範囲ペインで編集する
「データ」メニューから「名前付き範囲」を開き、編集したい名前をクリックします。 - スコープを変更する
「スコープ」のドロップダウンから「ワークブック」または「シート」を選択し直します。シートを選ぶ場合は対象のシート名を指定します。 - 変更を適用する
「完了」をクリックすると、その名前付き範囲のスコープが更新されます。ただし、スコープを変更すると既存の数式に影響を与える可能性があるため注意が必要です。
名前付き範囲を数式で参照する
シートスコープの名前付き範囲を別のシートから参照するには、シート名を明示するか、同じシート内では名前だけで参照します。例えば、シート2のセルに「=売上」と入力すると、シート2内の「売上」範囲が参照されます。シート1からシート2の「売上」を参照したい場合は「=シート2!売上」のようにシート名を付けます。ワークブックスコープの場合は、シート名なしで「=売上」と書けばどのシートからでも同じ範囲を参照できます。
また、INDIRECT関数を使うとシート名を動的に指定できます。例えば「=INDIRECT(\”シート2!売上\”)」のように文字列で指定すれば、シート名をセル参照に変更できます。これにより、複数シートのデータを一覧で集計する際に便利です。
スコープに関するよくあるトラブル
#REF!エラーが発生する
同じ名前のワークブックスコープとシートスコープが存在する場合、シートスコープが優先されます。そのため、別のシートからその名前を参照しようとすると、期待する値が取得できず#REF!エラーになることがあります。対策として、スコープの重複を避けるか、名前を一意にすることが重要です。例えば、ワークブックスコープの名前は「全体売上」、シートスコープは単に「売上」のように区別します。
名前の競合で予期しない値が返る
シートスコープの名前は、そのシート内ではワークブックスコープの同名を上書きします。したがって、シート内で名前付き範囲を利用する際は、どのスコープの定義が使われているか注意が必要です。必要であれば、名前の前にシート名を付けて明示的に指定することも検討してください。
シート名を変更したときの影響
シートスコープの名前付き範囲は、シート名に依存して定義されています。シート名を変更すると、その名前付き範囲は新しいシート名に自動的に追従します。ただし、他のシートから「=旧シート名!名前」のように参照している数式は#REF!エラーになるため、シート名変更後は参照先を確認し、必要に応じて修正してください。
ADVERTISEMENT
ワークブックスコープとシートスコープの比較
| 項目 | ワークブックスコープ | シートスコープ |
|---|---|---|
| 有効範囲 | ブック全体 | 特定のシートのみ |
| 名前の重複 | ブック内で一意(重複不可) | シートごとに同名可能 |
| 参照時の記法 | =名前 でそのまま使える | 同じシート内では =名前、別シートからは =シート名!名前 |
| 使用例 | 消費税率、会社名などの共通定数 | 月別シートの売上範囲、各部署の経費範囲 |
| 管理のしやすさ | 単純で混乱が少ないが、シートごとに独立した定義はできない | シートごとに独立して管理可能だが、名前の衝突に注意 |
| 数式の可読性 | シート名を省略できるため簡潔 | シート名を明示する必要がある場合があるが、意味が明確 |
まとめ
この記事では、名前付き範囲のスコープの概念と、複数シートで名前を再利用する方法を解説しました。スコープを正しく設定すれば、シートごとに異なる値を同じ名前で管理でき、データの可読性が向上します。次に試していただきたい応用として、名前付き範囲をINDIRECT関数と組み合わせて動的な参照を行う方法があります。また、QUERY関数やSUMIF関数の引数に名前付き範囲を使うことで、数式のメンテナンスが容易になります。スコープを意識して、スプレッドシートのデータ管理をさらに効率化してください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
