Google Sheetsの1,000万セル制限エラーを解消する方法

中級📗 Google Sheets2026-04-18| Google Sheets (Web版), Google Apps Script, Google Workspace

Error Message

This action would increase the number of cells in the workbook above the limit of 10000000 cells
#google-sheets#セル制限#パフォーマンス#bigquery

問題点Google スプレッドシートは無制限ではありません。すべてのワークブックには、1,000万セルという厳格な上限があります。これは膨大な数字に聞こえるかもしれませんが、すべてのタブに含まれるすべてのセル(完全に空のセルも含む)がカウントされます。

大規模なCSVのインポート、膨大なデータセットの貼り付け、または新しい行を生成するスクリプトの実行時に、この壁に突き当たることがよくあります。制限に達すると、Googleはセルを1つ追加する操作さえもブロックし、次のようなイライラさせるエラーを表示します:

This action would increase the number of cells in the workbook above the limit of 10000000 cells

ワークブックが肥大化する理由ほとんどのユーザーは、実際には1,000万行ものデータを持っていません。代わりに、「空白スペースによる肥大化」の犠牲になっています。新しいタブを作成すると、Google スプレッドシートはデフォルトで1,000行を作成します。シートに26列(AからZ)ある場合、それだけで瞬時に26,000セルになります。そのようなタブを40個追加すると、一文字も入力しないうちに、すでに100万セルを使い果たしたことになります。

自動化もよくある原因の一つです。多くのスクリプトは、末尾の空の行を整理せずにシートの最後にデータを追加するため、上限に達するまでグリッドが無制限に拡大し続けます。

ステップバイステップの解決策### 1. セルの使用状況を確認する目に見えないものは修正できません。データを削除し始める前に、どの特定のタブがリソースを消費しているかを特定する必要があります。50列と200,000行を持つシートは、それだけで1,000万セルの制限に達してしまいます。

原因を特定するには、拡張機能 > Apps Script に移動し、次のスニペットを貼り付けてください:

function checkCellCount() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  var totalCells = 0;
  
  sheets.forEach(function(sheet) {
    var rows = sheet.getMaxRows();
    var cols = sheet.getMaxColumns();
    var cellCount = rows * cols;
    totalCells += cellCount;
    Logger.log(sheet.getName() + ": " + cellCount.toLocaleString() + " cells (" + rows + "x" + cols + ")");
  });
  
  Logger.log("TOTAL WORKBOOK CELLS: " + totalCells.toLocaleString());
}

関数を実行し、実行ログを開きます。これにより、すべてのタブとその総セル数の明確なリストが表示され、どこに重点を置いて整理すべきかが正確にわかります。

2. 未使用の行と列を削除する「不要な負荷」を削ぎ落とすことが、エラーを解決する最も早い方法です。データが2,000行目で終わっているのに、シートが50,000行目まである場合、48,000行分の潜在的なスペースを無駄にしています。

  • データの下の最初の空の行の行番号をクリックします。- Ctrl + Shift + 下矢印キー(Macの場合は Cmd + Shift + 下矢印)を押して、一番下まですべて選択します。- 右クリックして行を削除を選択します。- データの右側にある未使用の列に対しても、Ctrl + Shift + 右矢印キーを使用してこのプロセスを繰り返します。### 3. スクリプトでクリーンアップを自動化する30個もの異なるタブを手動でクリーンアップするのは面倒です。このスクリプトは、ワークブック内のすべてのシートを自動的にトリミングし、実際のデータが含まれている領域のみにグリッドのサイズを調整します。
function trimAllSheets() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  
  sheets.forEach(function(sheet) {
    var lastRow = sheet.getLastRow();
    var maxRow = sheet.getMaxRows();
    var lastColumn = sheet.getLastColumn();
    var maxColumn = sheet.getMaxColumns();

    if (maxRow > lastRow && lastRow > 0) {
      sheet.deleteRows(lastRow + 1, maxRow - lastRow);
    }

    if (maxColumn > lastColumn && lastColumn > 0) {
      sheet.deleteColumns(lastColumn + 1, maxColumn - lastColumn);
    }
  });
}

4. 重いデータを BigQuery に移行する本当に1,000万行を分析する必要がある場合、Google スプレッドシートはもはや適切なツールではありません。スプレッドシートは計算や共同作業のために設計されており、大量のデータ保存用ではありません。セルの制限に達するずっと前に、パフォーマンスが著しく低下します。

BigQuery 用の コネクテッド シート の使用を検討してください。これにより、ピボットテーブルやグラフを作成するために慣れ親しんだ Google スプレッドシートのインターフェースを使用しながら、数百万行のデータをデータベースに保存できます。データはクラウドにあるため、1,000万セルの制限にはカウントされません。

確認クリーンアップ後、再度 checkCellCount() スクリプトを実行してください。数字が大幅に小さくなっているはずです。もし9,999,000セルだったのが2,000,000セルに減っていれば、エラーの再発を恐れずに作業できる十分な空き容量を確保できたことになります。

パフォーマンス向上のためのプロのヒント- 列全体の範囲を制限する: =A:A+B:B のような数式は、Google にシート内のすべての行を計算させます。可能な限り =A1:A1000 のような特定の範囲を使用してください。- インポートを監視する: Supermetrics や Zapier などのツールは、しばしば数千の「ゴースト」行を作成します。インポート設定を、データの追加ではなく上書きにするように設定してください。- ワークブックを分割する: 1つのファイルに2023年のデータと2024年のデータがある場合は、古いデータをアーカイブ用のワークブックに移動してください。IMPORTRANGE() を使用して、アクティブなシートに必要な集計データのみを取り込みます。

Related Error Notes