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

Office Scriptsでフィルタ・検索処理を配列で高速化!Excel自動化と大量データ処理の基本

フィルタ・検索処理を配列で高速化
フィルタ・検索処理を配列で高速化

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

生徒

「Office ScriptsでExcelのフィルタや検索を自動化したいです。大量データでも速く処理する方法はありますか?」

先生

「ありますよ。ポイントは“配列”を使うことです。セルを一つずつ見るのではなく、まとめて読み込んで処理します。」

生徒

「配列って何ですか?難しそうです…。」

先生

「配列は“データの入った箱の並び”のようなものです。Excelの表をまとめて箱に入れてから検索やフィルタを行うと、とても高速になります。」

1. Office Scriptsとは?

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

Office Scriptsは、Excel Onlineで使える自動化スクリプトです。Excelの自動化タブからスクリプトを実行でき、セル操作、データ検索、フィルタ処理、並び替え、集計などを自動で行えます。

プログラミング未経験の方でも、Excelの操作を「コード」に置き換えるだけなので安心です。特に大量データ処理や業務効率化に強く、Excel自動化や業務改善をしたい人に最適な機能です。

2. なぜフィルタ・検索は遅くなるのか?

2. なぜフィルタ・検索は遅くなるのか?
2. なぜフィルタ・検索は遅くなるのか?

Excelで一件ずつセルを確認しながら検索すると時間がかかります。これは「セルに何度もアクセスする」からです。

セルアクセスとは、Excelに「このセルの値を見せて」と毎回お願いすることです。大量データの場合、このお願いが何千回、何万回と続くため処理速度が低下します。

そこで重要なのが配列処理です。最初にデータをまとめて取得し、メモリ上で検索やフィルタリングを行えば高速化できます。これがOffice Scripts高速化テクニックの基本です。

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

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

配列とは、データを順番に並べて保存する仕組みです。たとえば名簿を一冊のノートにまとめるようなイメージです。

Excelの表をまとめて読み込むと、二次元配列という形になります。二次元とは「行と列」のことです。つまり表そのものを丸ごと箱に入れるイメージです。

4. 基本の検索処理を配列で書いてみよう

4. 基本の検索処理を配列で書いてみよう
4. 基本の検索処理を配列で書いてみよう

まずは特定の名前を検索するサンプルです。ExcelのA列に名前が入っているとします。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const range = sheet.getRange("A1:A10");
  const values = range.getValues();

  for (let i = 0; i < values.length; i++) {
    if (values[i][0] === "田中") {
      sheet.getRange("B1").setValue("見つかりました");
    }
  }
}

ここではgetValuesで一括取得しています。これが高速化のポイントです。

5. フィルタ処理を配列で実装する方法

5. フィルタ処理を配列で実装する方法
5. フィルタ処理を配列で実装する方法

次は売上データから「1000円以上」の行だけを抽出します。これがフィルタ処理です。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const range = sheet.getRange("A1:B10");
  const values = range.getValues();

  let result: (string | number)[][] = [];

  for (let i = 0; i < values.length; i++) {
    if (values[i][1] >= 1000) {
      result.push(values[i]);
    }
  }

  sheet.getRange("D1").getResizedRange(result.length - 1, 1).setValues(result);
}

pushは配列に追加する命令です。条件に合うデータだけを新しい配列に入れています。

6. includesを使った部分一致検索

6. includesを使った部分一致検索
6. includesを使った部分一致検索

完全一致だけでなく、部分一致検索も可能です。たとえば「山」が含まれる名前を探します。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const values = sheet.getRange("A1:A10").getValues();

  for (let i = 0; i < values.length; i++) {
    if (String(values[i][0]).includes("山")) {
      sheet.getRange("C1").setValue("山を含む名前あり");
    }
  }
}

includesは「含まれているか」を調べる機能です。検索処理の基本テクニックです。

7. filterメソッドでさらに高速化

7. filterメソッドでさらに高速化
7. filterメソッドでさらに高速化

Office ScriptsはTypeScriptベースなので、filterメソッドも使えます。よりシンプルに書けます。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const values = sheet.getRange("A1:B10").getValues();

  const filtered = values.filter(row => row[1] >= 1000);

  sheet.getRange("E1").getResizedRange(filtered.length - 1, 1).setValues(filtered);
}

filterは条件に合うデータだけを自動抽出する便利な機能です。Excel自動化や大量データ処理では非常に役立ちます。

8. フィルタ・検索を配列で高速化するコツ

8. フィルタ・検索を配列で高速化するコツ
8. フィルタ・検索を配列で高速化するコツ

高速化のコツは三つあります。第一にセルを一件ずつ読まないこと。第二にgetValuesで一括取得すること。第三に配列内で処理を完結させることです。

Office Scriptsでフィルタ処理や検索処理を行う場合、この考え方を守るだけで処理速度が大きく向上します。

Excel業務自動化、データ分析、売上管理、名簿検索など、あらゆる場面で使える重要テクニックです。初心者の方はまず「配列に入れてから処理する」という流れを覚えておきましょう。

まとめ

まとめ
まとめ

今回はOffice Scriptsでフィルタ処理や検索処理を配列を使って高速化する方法を学びました。Excel自動化や大量データ処理を行ううえで重要なのは、セルを一件ずつ操作しないという考え方です。getValuesでデータを一括取得し、配列の中で検索や抽出を行うことで、処理速度は大きく向上します。これはExcel業務効率化、データ分析自動化、売上管理システム構築など、さまざまな場面で活用できる基本テクニックです。

特にOffice ScriptsはTypeScriptを基盤としているため、filterやincludesといった配列メソッドを活用できます。これにより、検索アルゴリズムやフィルタロジックを簡潔に書けるだけでなく、可読性も高まります。Excelオンライン環境での高速処理を実現するためには、配列操作の理解が欠かせません。

また、フィルタ条件を変えるだけで、売上集計、顧客抽出、名簿検索、在庫管理などにも応用可能です。大量データを扱う業務では、配列でまとめて処理するという発想が、パフォーマンス改善の鍵になります。初心者の方は、まず「一括取得してから配列内で処理する」という流れを確実に身につけましょう。

サンプルプログラム総復習

最後に、検索とフィルタを組み合わせた実践的なサンプルを確認しましょう。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const range = sheet.getRange("A1:B100");
  const values = range.getValues();

  // 名前に「山」を含み、売上が1000以上のデータ抽出
  const result = values.filter(row =>
    String(row[0]).includes("山") && row[1] >= 1000
  );

  if (result.length > 0) {
    sheet.getRange("D1")
      .getResizedRange(result.length - 1, 1)
      .setValues(result);
  }
}

このように条件を組み合わせることで、複雑な検索処理や多条件フィルタリングも高速に実装できます。Office ScriptsによるExcel自動化は、業務改善や作業時間短縮に直結する重要スキルです。

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

生徒

「今日はOffice Scriptsで配列を使った検索処理とフィルタ処理の高速化を学びました。セルを一つずつ見るのではなく、まとめて取得するのが大事なんですね。」

先生

「その通りです。Excel自動化ではセルアクセス回数を減らすことが重要です。getValuesで一括取得し、配列内で処理することで大量データ処理でも安定した速度が出ます。」

生徒

「includesやfilterを使えば、部分一致検索や条件抽出も簡単に書けました。思ったより分かりやすかったです。」

先生

「配列メソッドを理解すると、検索アルゴリズムやフィルタロジックの幅が広がります。売上分析や顧客データ抽出にも応用できますよ。」

生徒

「Excelオンラインでここまで自動化できるのは便利ですね。業務効率化にすぐ活かせそうです。」

先生

「ぜひ実際のデータで試してみてください。Office Scriptsと配列処理を組み合わせれば、検索高速化やフィルタ最適化は確実に実現できます。」

カテゴリの一覧へ
新着記事
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自動化コードを設計する方法