カテゴリ: Office Scripts 更新日: 2026/03/28

Office Scripts入門!2次元配列で大量データを高速書き込みする方法【Excel自動化・パフォーマンス改善】

2次元配列を使った大量データ高速書き込み
2次元配列を使った大量データ高速書き込み

先生と生徒の会話形式で理解しよう

生徒

「Office ScriptsでExcelに大量データを書き込みたいんですが、1件ずつ入力するとすごく遅いです…高速化する方法はありますか?」

先生

「ありますよ。Excel自動化では2次元配列を使ってまとめて書き込むと、処理速度が大きく改善します。」

生徒

「2次元配列って何ですか?プログラミングも初めてで難しそうです。」

先生

「表の形をそのまま箱に入れて、一度にドンと置くイメージです。これからゆっくり解説しますね。」

1. Office Scriptsとは?

1. Office Scriptsとは?
1. Office Scriptsとは?

Office Scriptsとは、Excel Onlineで使える自動化機能です。Excelの操作をコードで記述し、ボタンひとつで実行できます。Excel自動化、業務効率化、定型作業の削減などに役立つ便利な仕組みです。

使われている言語はTypeScriptです。TypeScriptはJavaScriptをもとにした言語で、Web開発でもよく使われています。難しそうに聞こえますが、実際は「セルを選ぶ」「値を入れる」といった操作を文字で書いているだけです。

たとえば、セルA1に文字を入れるコードは次のようになります。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  sheet.getRange("A1").setValue("Excel自動化");
}

このように、Excelの操作をそのままコードに置き換えていきます。

2. なぜ大量データは遅くなるのか?

2. なぜ大量データは遅くなるのか?
2. なぜ大量データは遅くなるのか?

初心者がよくやってしまうのが、セルを1つずつ書き込む方法です。たとえば1000行のデータを1行ずつ入力すると、1000回もExcelに命令を送ることになります。

これは、毎回コンビニに1本ずつジュースを買いに行くようなものです。まとめて買えば早いのに、何度も往復しているので時間がかかります。

実際に1件ずつ書き込む例を見てみましょう。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();

  for (let i = 0; i < 100; i++) {
    sheet.getRange("A" + (i + 1)).setValue(i);
  }
}

この方法は分かりやすいですが、大量データ処理ではパフォーマンスが低下します。

3. 2次元配列とは?初心者向けやさしい解説

3. 2次元配列とは?初心者向けやさしい解説
3. 2次元配列とは?初心者向けやさしい解説

2次元配列とは、行と列を持つデータの集まりです。Excelの表と同じ形をしています。

1次元配列は横一列のデータです。2次元配列は、横と縦のデータを持っています。つまり、表そのものです。

たとえば、次のようなデータです。


名前   年齢
田中   20
佐藤   25

これをそのまま配列にすると次のようになります。


const data = [
  ["名前", "年齢"],
  ["田中", 20],
  ["佐藤", 25]
];

このように、配列の中に配列が入っている形を2次元配列と呼びます。

4. 2次元配列で高速書き込みする方法

4. 2次元配列で高速書き込みする方法
4. 2次元配列で高速書き込みする方法

大量データ高速書き込みのポイントは、setValuesメソッドを使うことです。setValuesは、まとめて範囲にデータを書き込みます。

まとめて一度に書くので、Excelとのやり取りが少なくなり、処理速度が向上します。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();

  const data = [
    ["商品", "価格"],
    ["りんご", 100],
    ["みかん", 120],
    ["バナナ", 150]
  ];

  sheet.getRange("A1:B4").setValues(data);
}

これだけで、表全体が一瞬で書き込まれます。業務自動化やデータ処理の高速化にとても重要なテクニックです。

5. ループと組み合わせた大量データ生成

5. ループと組み合わせた大量データ生成
5. ループと組み合わせた大量データ生成

実務では、データを自動で作ることも多いです。その場合も、まず2次元配列を作り、最後にまとめて書き込みます。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();

  const rows = 1000;
  const data: (string | number)[][] = [];

  for (let i = 0; i < rows; i++) {
    data.push(["社員" + (i + 1), i + 20]);
  }

  sheet.getRange(0, 0, rows, 2).setValues(data);
}

このコードでは1000行のデータを高速生成し、一度で書き込みます。これがExcelパフォーマンス改善の基本です。

6. パフォーマンス改善のポイントまとめ

6. パフォーマンス改善のポイントまとめ
6. パフォーマンス改善のポイントまとめ

Office Scriptsで大量データ処理をするときは、セル単位で書かないことが重要です。2次元配列にまとめることで、処理時間を短縮できます。

高速化のコツは次の通りです。

・setValueを繰り返さない
・setValuesで一括書き込みする
・先に配列を完成させてからExcelへ渡す

この方法は、Excel自動化、業務効率化、データ分析、帳票出力など、さまざまな場面で活躍します。Office Scriptsの配列処理を理解すれば、大量データでも怖くありません。

まとめ

まとめ
まとめ

今回は、Office Scriptsを使ったExcel自動化の中でも特に重要な「2次元配列による大量データの高速書き込み」について学びました。Excel Onlineで業務効率化を進めるうえで、パフォーマンス改善は避けて通れないテーマです。特に大量データ処理を行う場合、セルを1件ずつsetValueで書き込む方法では処理時間が長くなり、実務ではストレスの原因になります。

そこで重要になるのが、TypeScriptで2次元配列を作成し、setValuesメソッドで一括書き込みする方法です。2次元配列は、Excelの表構造と同じ「行と列」を持つデータ形式です。この形式でデータを準備し、最後にまとめてExcelへ渡すことで、通信回数を減らし、処理速度を大幅に向上させることができます。

Office ScriptsによるExcel自動化では、「配列を先に完成させる」という考え方が非常に重要です。これは単なるテクニックではなく、パフォーマンス設計の基本です。大量データを扱う業務システム、売上管理表、顧客リスト、在庫一覧、社員名簿など、あらゆるExcel業務に応用できます。

もう一度、基本となる高速書き込みコードを確認してみましょう。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();

  const data = [
    ["商品", "価格"],
    ["りんご", 100],
    ["みかん", 120],
    ["バナナ", 150]
  ];

  sheet.getRange("A1:B4").setValues(data);
}

このように、2次元配列を用意してsetValuesでまとめて書き込むだけで、Excel自動化の効率は飛躍的に向上します。大量データ高速書き込みの基本は、「まとめて渡す」という発想です。

さらに、実務ではループ処理と組み合わせることで、数百行から数千行のデータ生成も簡単に実現できます。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();

  const rows = 500;
  const data: (string | number)[][] = [];

  for (let i = 0; i < rows; i++) {
    data.push(["社員" + (i + 1), 20 + i]);
  }

  sheet.getRange(0, 0, rows, 2).setValues(data);
}

この考え方を理解すれば、Excelパフォーマンス改善は難しくありません。Office Scriptsでの配列処理、TypeScriptの基本構文、ループ処理、Range指定方法を組み合わせることで、業務効率化は確実に前進します。

Excel自動化を成功させるポイントは、「一つずつ操作しない」「まとめて処理する」「構造を意識する」という三つです。2次元配列はその中心にある重要な技術です。今回学んだ内容は、今後のOffice Scripts活用の土台になります。

先生と生徒の振り返り会話

生徒
Office Scriptsで大量データを書き込むときは、1件ずつsetValueを使うのではなく、2次元配列を作ってsetValuesでまとめて書き込むのが大事なんですね。

先生
その通りです。Excel自動化では通信回数を減らすことがパフォーマンス改善の鍵になります。2次元配列はそのための基本技術です。

生徒
2次元配列は、Excelの表と同じ形のデータ構造だから、そのまま一括で渡せるんですね。だから高速書き込みができるんですね。

先生
よく理解できていますね。大量データ処理では、まず配列を完成させてからExcelに渡すという流れを意識しましょう。

生徒
ループ処理でデータを作って、最後にsetValuesでまとめて書き込む。この流れを覚えておけば、業務効率化にも応用できそうです。

先生
その通りです。Office ScriptsとTypeScriptの基礎を押さえれば、Excel自動化は怖くありません。今日学んだ2次元配列と大量データ高速書き込みの考え方を、ぜひ実務で活用してください。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsの基本!企業環境で安全にExcel自動化を使うための利用制限と管理者設定
New2
Office Scripts
Office Scriptsの基本!TypeScriptの型注釈を理解してExcel自動化を安全に書く方法
New3
Office Scripts
Office Scriptsの基本!Excel自動化で使うgetValues・setValues完全ガイド【初心者向け】
New4
Office Scripts
Office Scriptsの基本!エラー表示とログ確認でExcel自動化を安全に進める方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成
No.2
Java&Spring記事人気No2
Excel VBA
個人用マクロブック(PERSONAL.XLSB)で作る最強の共通ライブラリ化ガイド
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.4
Java&Spring記事人気No4
Excel VBA
VBAモジュールを安全にエクスポート・インポートする方法と注意点
No.5
Java&Spring記事人気No5
Excel VBA
ThisWorkbookに書くべき処理とは?VBAプロジェクトの正しい構成方法
No.6
Java&Spring記事人気No6
Excel VBA
Excel VBAのループ処理を徹底解説!For文とDo Loopで繰り返しを自動化
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAのブレークポイント設定と使い方!初心者でも理解できるデバッグの基本
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!関数分割で読みやすいExcel自動化コードを設計する方法