大量のデータを扱っていると、シート全体ではなく特定の範囲だけを別のファイルとして保存したい場面があります。例えば、月ごとの売上データを別々のExcelファイルに分ける必要がある場合です。この記事では、Googleスプレッドシートのデータを複数のxlsxファイルに分割して保存する方法を、手動操作とApps Scriptを使った自動化の2通りで解説します。手軽に済ませたい方から、繰り返し作業を効率化したい方まで、目的に合った方法を選べます。
【要点】データをxlsxに分割保存するための2つの方法
- シートのコピーと「名前を付けて保存」: 分割したいデータを新しいシートにコピーし、xlsx形式でダウンロードする手動の方法です。数回の分割に適しています。
- Apps Scriptによる自動分割: カスタム関数を作成して、条件に応じてデータを分割し、それぞれをxlsxファイルとして保存します。大量の分割や定期的な処理に向いています。
ADVERTISEMENT
目次
データ分割が必要になる場面と前提条件
Googleスプレッドシートでは、直接xlsxファイルを複数に分割する機能は用意されていません。そのため、何らかの方法でデータを切り分けてから、それぞれを別ファイルとして書き出す必要があります。手動の方法は、分割数が少なく、かつ頻度が低い場合に適しています。一方、数十個の分割が必要な場合や、毎月決まった処理を行う場合は、自動化が現実的です。事前に、分割の基準(例:特定の列の値ごと)を明確にしておくと、作業がスムーズに進みます。
方法1:手動でシートをコピーしてxlsxとして保存する手順
操作手順
- 分割したいデータ範囲を選択する
分割するデータが含まれるシートを開き、必要なセル範囲をドラッグして選択します。例えば、A1からD100までの範囲を選択します。 - 新しいシートにデータをコピーする
選択範囲を右クリックして「コピー」を選びます。次に、新しいシートを作成するために、シートタブの左端にある「+」アイコンをクリックします。新しいシートが開いたら、セルA1を右クリックして「貼り付け」を選択します。 - xlsx形式でダウンロードする
貼り付け後、そのシートのみが含まれた状態でスプレッドシート全体をダウンロードします。メニューから「ファイル」→「ダウンロード」→「Microsoft Excel(.xlsx)」を選びます。これで、書き出したxlsxファイルにはコピーしたデータだけが含まれます。 - 分割数だけ繰り返す
元のシートの別の範囲に対しても同じ操作を繰り返します。分割数が多い場合は、手間がかかるため、次の方法を検討してください。
この方法の注意点
手動の方法はシンプルですが、データ量が大きい場合や分割数が多いと非効率です。また、コピー時の書式や数式が正しく保持されない可能性があるため、貼り付け後に数式が壊れていないか確認してください。特に、他シートを参照する数式があるとエラーになるため、値として貼り付けるか、参照先も一緒にコピーする必要があります。
方法2:Apps Scriptで自動分割してxlsxを出力する手順
スクリプトの概要
Google Apps Scriptを使うと、スプレッドシートのデータを条件でフィルタリングし、それぞれを新しいスプレッドシートにコピーした上で、xlsx形式でエクスポートすることができます。スクリプトは一度作成すれば、ボタンやトリガーで繰り返し実行できます。ここでは、特定の列の値ごとにデータを分割し、各グループを別々のxlsxファイルとして保存するサンプルコードを紹介します。
スクリプトの作成手順
- スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」を選びます。新しいタブでスクリプトエディタが開きます。 - コードを記述する
デフォルトのコードを削除し、以下のサンプルコードを貼り付けます。このコードは、シート「売上データ」のA列の値(例:月)を基準にデータを分割し、各グループを新しいスプレッドシートにコピーした後、xlsxとしてダウンロード用のURLを生成します。サンプルコード(簡略版):
function splitAndExport() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(‘売上データ’);
var data = sheet.getDataRange().getValues();
var headers = data.shift();
var groups = {};
data.forEach(function(row) {
var key = row[0]; // A列をキーとする
if (!groups[key]) groups[key] = [];
groups[key].push(row);
});
var folder = DriveApp.getFolderById(‘YOUR_FOLDER_ID’); // 保存先フォルダID
Object.keys(groups).forEach(function(key) {
var newSS = SpreadsheetApp.create(‘Export_’ + key);
var newSheet = newSS.getActiveSheet();
newSheet.getRange(1,1,1, headers.length).setValues([headers]);
newSheet.getRange(2,1, groups[key].length, headers.length).setValues(groups[key]);
// シートを残してスプレッドシートをBlobとしてエクスポート
var url = newSS.getUrl();
var blob = UrlFetchApp.fetch(url + ‘/export?format=xlsx’).getBlob();
var file = folder.createFile(blob).setName(‘Export_’ + key + ‘.xlsx’);
// 一時スプレッドシートを削除(オプション)
DriveApp.getFileById(newSS.getId()).setTrashed(true);
});
} - フォルダIDを設定する
コード内の’YOUR_FOLDER_ID’を、実際のGoogleドライブのフォルダIDに置き換えます。フォルダIDはフォルダのURLから取得できます(例:https://drive.google.com/drive/folders/xxxxx のxxxxx部分)。 - スクリプトを保存して実行する
スクリプトエディタのフロッピーアイコンをクリックして保存します。関数名「splitAndExport」を選び、▶(実行)ボタンをクリックします。初回実行時は権限の承認を求められるので、内容を確認して許可します。 - 出力されたxlsxファイルを確認する
指定したフォルダに、グループごとに「Export_月名.xlsx」というファイルが保存されます。各ファイルにはヘッダー行と該当グループのデータのみが含まれています。
スクリプトのカスタマイズポイント
サンプルコードはA列の値で分割していますが、分割基準を変えたい場合は、row[0]の部分を適切な列インデックスに変更します。例えば、B列で分割するならrow[1]にします。また、ファイル名や保存先フォルダも自由に変更できます。さらに、トリガーを設定すれば、定期的に自動実行することも可能です。
ADVERTISEMENT
手動方式とスクリプト方式の比較
| 項目 | 手動方式 | Apps Script方式 |
|---|---|---|
| 手間 | 少ない分割数なら簡単 | 初期設定が必要 |
| 効率性 | 分割数が多いと非効率 | 大量分割でも高速 |
| 再現性 | 毎回手動操作が必要 | ボタンやトリガーで繰り返し可能 |
| エラーのリスク | コピーミスや書式崩れの可能性 | コードミスはあるが安定 |
| 必要なスキル | 基本的な操作のみ | 簡単なスクリプト知識 |
使用時の注意点とよくあるトラブル
手動方式で書式が崩れる
コピー&ペーストでは、セルの色や罫線などの書式が保持されない場合があります。特に、条件付き書式やデータの入力規則はコピーされないので、分割後に再設定が必要です。対策として、シート全体をコピーするのではなく、セルの書式を「値のみ貼り付け」としてから手動で書式を整える方法もあります。
スクリプト方式で権限エラーが発生する
Apps Scriptの初回実行時には、スプレッドシートやドライブのアクセス権限を承認する必要があります。承認画面で「許可」をクリックしないとスクリプトは実行できません。また、スクリプト内で他のサービス(例えばGmail)を使う場合は、追加の権限が必要になることがあります。
xlsxファイルが文字化けする
エクスポート時にUTF-8以外の文字が含まれていると、xlsxファイルで文字化けが発生する可能性があります。特に日本語のデータが多い場合は、スクリプト内で文字コードを指定するなどの対策は不要です。Googleスプレッドシートのエクスポート機能は正しくUTF-8を扱うため、通常は問題ありません。もし化けた場合は、一度CSVとして出力してからExcelで開き直す方法を試してください。
スクリプトの実行時間制限
Apps Scriptには1回の実行で6分間という制限があります。大量のデータを分割する場合、この制限を超えるとスクリプトが途中で止まります。その場合は、分割するグループ数を減らすか、スクリプトを工夫して処理を分割します。また、Google Workspaceアカウントでは制限が異なる場合があるため、事前に確認してください。
まとめ
Googleスプレッドシートのデータをxlsxファイルに分割して保存するには、手動のコピー&ダウンロードとApps Scriptによる自動化の2つの方法があります。手動方式は手軽で、数個のファイルに分ける場合に便利です。スクリプト方式は初期設定が必要ですが、大量のファイルや定期的な処理を効率的に行えます。それぞれの特徴を理解して、自分の作業に合った方法を選んでください。また、スクリプトをカスタマイズすることで、分割基準やファイル名を柔軟に変更できます。ぜひ実際に試して、スプレッドシートのデータ管理をよりスムーズにしてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
