たとえば、DCFタブに =NPV(WACC,'Cash Flow'!C5:C14) という数式があり、WACC が Assumptions!$B$4 を指す名前付き範囲だったとします。このシートを別ファイルにコピーすると、コピー先に同名のシートがなければ #NAME? エラーが発生します。あるいは、Sheetsが黙って Assumptions!$B$4 という直接参照に書き換えてしまいます。
「コピーを作成」(ファイル全体)と「コピー先」(個別シート)の違いは、財務チームのモデルテンプレートが壊れる最もよくある原因です。
名前付き範囲はGoogle Sheetsの「コピー先」でどう扱われるか
| コピー対象 | 名前付き範囲 | 名前付き範囲を参照する数式 | 名前付き範囲を使ったデータ検証 |
|---|---|---|---|
| 「ファイル」→「コピーを作成」(スプレッドシート全体) | コピーされる | 維持される | 維持される |
| タブ右クリック→「コピー先」→新しいスプレッドシート | コピーされない | A1参照に書き換えられる | ソースが失われる |
| タブ右クリック→「コピー先」→既存のスプレッドシート | コピーされない | A1参照に書き換えられる | ソースが失われる |
Google Workspace ヘルプセンター「名前付き範囲を定義および使用する」には、「名前付き範囲はスプレッドシートにスコープされており、個別シートにはスコープされていない」と明記されています。つまり、1枚のタブをファイルから切り離した瞬間、そのタブが参照していた名前付き範囲はすべて書き換えられるか、孤立します。
数式参照はサイレントに変換される。 名前付き範囲がコピー対象のシート上のセルを指していた場合、SheetsはそれをA1参照形式に書き換えます。=DiscountRate は =Assumptions!$B$4 になります。数式は動作しますが、可読性のために付けた自己説明的なレイヤーは失われます。モデルをレビューする担当者が数式を開いても、意図ではなく生のセルアドレスしか見えません。
クロスタブの名前付き範囲は致命的に壊れる。 名前付き範囲がコピーに含まれていないシートを指していた場合、#REF! または #NAME? が発生します。WACC・TaxRate・TerminalGrowthRate・FX前提値をすべて中央のAssumptionsタブで管理している8タブ構成のモデルなら、エラーが連鎖します。
データ検証が機能しなくなる。 名前付き範囲をソースとするドロップダウンは参照先を失います。セルには最後に入力された値が残りますが、新しい入力のバリデーションは効かなくなります。
Google Sheetsはスプレッドシートあたり最大1,000個の名前付き範囲をサポートしています(Sheets API v4 使用量と制限より)。多くのFP&Aモデルでは8〜30個程度が使われており、手作業での再構築が不可能なわけではありませんが、テンプレートコピーのたびにすべて消えるのは確かに痛手です。
財務・経営企画チームが直面する3つのシナリオ
四半期決算報告テンプレート。 売上4.2億円・粗利益率38.5%・EBITDA 6,200万円という第4四半期の報告パックを丁寧に仕上げ、ReportingPeriod・FXRate・BudgetRevenue という名前付き範囲を設定したとします。P&Lタブを第1四半期の新しいファイルにコピーすると、数式はハードアドレスに書き換えられます。しかし第1四半期のファイルにはまだAssumptionsタブが存在しないため、半数近くが #REF! になります。「ちゃんとドキュメントされていたはずの参照」を追いかけるだけで45分が消えます。
事業会社別の連結モデル。 8タブ構成の単体LBOモデルを4社分に展開したいとします。「コピーを作成」で4回複製する分には問題ありません。ところが、3社目のRevenueタブを1社目のバージョンで上書きしようと個別タブをコピーした瞬間、ファイルをまたぐたびに名前付き範囲が壊れます。
既存モデルへのタブの取り込み。 スタンドアロンのファイルで完成させたウォーターフォール分析を、シンジケートローン向けDCFパッケージに組み込みたいとします。タブをコピーすると、名前付き範囲の参照はすべてコピー元のファイルアドレスに書き換えられ、コピー先では無効になります。
3つの対処法
方法1:ポータビリティのために明示的なタブ参照を使う
複数のシートが参照する前提値については、名前付き範囲を使わず直接タブ参照にする方法があります。
// 「コピー先」で壊れる書き方:
=NPV(WACC, 'Cash Flow'!C5:C14)
// ポータブルな書き方:
=NPV(Assumptions!$B$4, 'Cash Flow'!C5:C14)
可読性は下がりますが、Assumptionsタブさえ一緒にコピーすれば、どんなコピー操作にも耐えられます。取締役会向け報告書・クライアントモデル・事業体別連結など、テンプレートとして繰り返しコピーするモデルなら、長期的なメンテナンスコストを下げられます。
方法2:Apps Scriptで名前付き範囲を再構築する(一回実行)
「コピー先」を定期的なワークフローで使っている場合は、以下のApps Scriptをコピー先ファイルで一度実行することで名前付き範囲を再構築できます。「拡張機能」→「Apps Script」に貼り付け、definitions オブジェクトをご自身のモデルに合わせて更新したうえで、一度だけ実行してください。
// コピー先の新しいファイルで一回だけ実行する。
// ハードコードされた定義マップから名前付き範囲を再構築する。
function rebuildNamedRanges() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// マップ:名前付き範囲 -> シート名!セル
var definitions = {
'WACC': 'Assumptions!B4', // 加重平均資本コスト 9.2%
'TerminalGrowthRate': 'Assumptions!B5', // ターミナル成長率 2.5%
'TaxRate': 'Assumptions!B6', // 実効税率 27%
'ReportingPeriod': 'Assumptions!B2', // "FY2026"
'FXRate_USD_EUR': 'Assumptions!B9' // 2026年6月時点 0.923
};
var rebuilt = 0;
for (var name in definitions) {
var parts = definitions[name].split('!');
var sheet = ss.getSheetByName(parts[0]);
if (sheet) {
ss.setNamedRange(name, sheet.getRange(parts[1]));
rebuilt++;
}
}
Logger.log('Rebuilt ' + rebuilt + ' named ranges.');
}
実行時間は3秒ほどです。この関数をテンプレートのAssumptionsタブのコメントに貼り付けておくと、モデルを引き継いだ担当者がすぐに見つけられます。
方法3:ファイル全体をコピーして不要なシートを削除する
名前付き範囲を確実に維持したい場合は、個別タブのコピーではなく「ファイル」→「コピーを作成」でスプレッドシート全体を複製し、不要なシートを削除する方法が確実です。やや大雑把ですが、名前付き範囲・データ検証・クロスタブ参照がすべて維持されます。モデル構造が安定していて期間を繰り越すだけの四半期テンプレートなら、タブ単位のコピー管理より速いことが多いです。
2026年6月時点で、「コピー先」操作に名前付き範囲を同時にコピーするネイティブUIオプションはGoogle Sheetsに存在しません。これは数年来の既知の制限であり、現行のSheets API v4ドキュメントでも対応策は記載されていません。
ドキュメント化という先行投資
コピーを前提としたモデルを構築する場合(そしてFP&Aモデルのほとんどはそうです)、NamedRanges タブを用意することをお勧めします。範囲名 → シート名!セル → 説明 の3列テーブルは20分で作れます。
RangeName | Cell | 説明
WACC | Assumptions!B4 | DCF割引率に使う加重平均資本コスト
TerminalGrowthRate | Assumptions!B5 | 予測期間後の永続成長率
TaxRate | Assumptions!B6 | 実効法人税率
FXRate_USD_EUR | Assumptions!B9 | 月末レート(EUR/USD)
ReportingPeriod | Assumptions!B2 | ヘッダー用の会計年度ラベル
「コピー先」で名前付き範囲が消えたとき、このテーブルが再構築の手引きになります。さらに、Apps Scriptの definitions オブジェクトをハードコードではなくこのタブから動的に読み込むように書き換えれば、自己ドキュメント化されたテンプレートが完成します。
=SUMIFS('P&L'!C:C,'P&L'!B:B,">="&Assumptions!$B$3) のようなクロスタブ数式は名前付き範囲なしでも動作します。しかし、アドレスの中に意図が埋もれてしまいます。名前付き範囲があればモデルレビューが速くなり、レビューが速ければシンジケートデスクとの往復も減り、ディールのクロージングまでの時間が短縮されます。
コピー後のモデルで名前付き範囲の破損によって発生した #NAME? や #REF! エラーを自動検出し、Assumptionsタブの構造をもとに再構築したい場合は、ModelMonkeyをお試しください。テンプレートコピー後に40個の数式を手動で追いかける作業が大幅に短縮されます(ModelMonkeyのプランを選ぶ)。
よくある質問
「コピーを作成」と「コピー先」は何が違うのですか? 「コピーを作成」はスプレッドシート全体を新しいファイルとして複製するため、名前付き範囲・データ検証・クロスタブ参照がすべて維持されます。「コピー先」は選択したタブのみを別ファイルへ移動・コピーする操作で、名前付き範囲はスプレッドシートにスコープされているため移動できず、コピー元に残ります。
「コピー先」で名前付き範囲を一括コピーするネイティブ機能はありますか? 2026年6月時点では存在しません。Google Sheetsの公式UIにはその機能がなく、Apps Scriptで手動再構築するか、「コピーを作成」でファイルごと複製する方法が現実的な代替手段です。
名前付き範囲が消えたことに気づかない場合があるのですか? あります。名前付き範囲がコピー対象シート内のセルを指していた場合、SheetsはA1参照に自動変換するため、数式は一見動いているように見えます。エラーなく計算結果が出るものの、「なぜこのセルを参照しているのか」という意図の説明が失われた状態になります。
データ検証のドロップダウンが「コピー先」後に壊れた場合の対処法は? コピー先のファイルで当該セルを選択し、「データ」→「データの入力規則」を開いてください。ソース範囲が空欄または無効になっていれば、名前付き範囲の参照が失われています。コピー先のファイルで対応する名前付き範囲を再定義したうえで、入力規則を再設定するか、方法2のApps Scriptで名前付き範囲を一括再構築してから入力規則を更新してください。
Apps ScriptのrebuildNamedRanges関数は毎回更新が必要ですか?
モデルの名前付き範囲が変わらない限り更新不要です。ただし新しい前提値セルを追加した際は definitions オブジェクトに行を追記してください。NamedRanges タブからシート読み込みを動的に行うよう書き換えると、管理の手間がさらに減ります。