Office Scriptsでフィルタ・検索処理を配列で高速化!Excel自動化と大量データ処理の基本
生徒
「Office ScriptsでExcelのフィルタや検索を自動化したいです。大量データでも速く処理する方法はありますか?」
先生
「ありますよ。ポイントは“配列”を使うことです。セルを一つずつ見るのではなく、まとめて読み込んで処理します。」
生徒
「配列って何ですか?難しそうです…。」
先生
「配列は“データの入った箱の並び”のようなものです。Excelの表をまとめて箱に入れてから検索やフィルタを行うと、とても高速になります。」
1. Office Scriptsとは?
Office Scriptsは、Excel Onlineで使える自動化スクリプトです。Excelの自動化タブからスクリプトを実行でき、セル操作、データ検索、フィルタ処理、並び替え、集計などを自動で行えます。
プログラミング未経験の方でも、Excelの操作を「コード」に置き換えるだけなので安心です。特に大量データ処理や業務効率化に強く、Excel自動化や業務改善をしたい人に最適な機能です。
2. なぜフィルタ・検索は遅くなるのか?
Excelで一件ずつセルを確認しながら検索すると時間がかかります。これは「セルに何度もアクセスする」からです。
セルアクセスとは、Excelに「このセルの値を見せて」と毎回お願いすることです。大量データの場合、このお願いが何千回、何万回と続くため処理速度が低下します。
そこで重要なのが配列処理です。最初にデータをまとめて取得し、メモリ上で検索やフィルタリングを行えば高速化できます。これがOffice Scripts高速化テクニックの基本です。
3. 配列とは?初心者向けやさしい解説
配列とは、データを順番に並べて保存する仕組みです。たとえば名簿を一冊のノートにまとめるようなイメージです。
Excelの表をまとめて読み込むと、二次元配列という形になります。二次元とは「行と列」のことです。つまり表そのものを丸ごと箱に入れるイメージです。
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. フィルタ処理を配列で実装する方法
次は売上データから「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を使った部分一致検索
完全一致だけでなく、部分一致検索も可能です。たとえば「山」が含まれる名前を探します。
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メソッドでさらに高速化
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. フィルタ・検索を配列で高速化するコツ
高速化のコツは三つあります。第一にセルを一件ずつ読まないこと。第二に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と配列処理を組み合わせれば、検索高速化やフィルタ最適化は確実に実現できます。」