Office Scriptsの基本!ループ処理(for / for…of)を使ってExcel操作を自動化する方法
生徒
「Office Scriptsでたくさんのセルを一気に操作したいんですが、1つずつ書くしかないんですか?」
先生
「同じ作業を何度も行うときは、ループ処理を使うと一気に自動化できます。」
生徒
「ループって聞いたことはありますが、難しそうで不安です……。」
先生
「Excelで行を上から順番に処理する感覚と同じです。forやfor…ofを使えば、初心者でもすぐ理解できますよ。」
1. Office Scriptsとは?
Office Scriptsは、Excel Onlineで使えるExcel自動化の仕組みです。 セル入力、行や列の処理、データの整理などを、TypeScriptのコードでまとめて実行できます。
特に行数が多いExcelファイルでは、ループ処理を使うことで、 人が1行ずつ操作していた作業を一瞬で終わらせられます。
2. ループ処理とは何かをやさしく理解する
ループ処理とは、「同じ作業を決められた回数だけ繰り返す」仕組みです。 例えるなら、スタンプを1枚ずつ順番に押していく作業と似ています。
Excelで言えば、「1行目から10行目まで同じ処理をする」といった操作が、 ループ処理の得意分野です。
3. for文の基本とExcel操作への応用
for文は、「何回繰り返すか」が決まっているときに使います。 行番号を使ってセルを順番に処理する場合にとても便利です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
for (let i = 1; i <= 5; i++) {
sheet.getRange(`A${i}`).setValue("チェック済み");
}
}
このコードでは、A1からA5までのセルに同じ文字を順番に書き込みます。 人が1セルずつ入力する必要はありません。
4. for文は行番号を扱うときに強い
for文は、行番号や列番号を数で管理するのが得意です。 「何行目から何行目まで」といった指定がある処理に向いています。
Excelの行数が決まっている帳票や、固定フォーマットの表では、 for文を使うことで処理を簡単に書けます。
5. for…of文とは何かを理解する
for…of文は、「配列の中身を1つずつ取り出す」ためのループ処理です。 行番号を意識せず、データそのものを順番に扱えます。
Excelの表データを配列として扱う場合に、とても読みやすい書き方になります。
6. for…of文を使ったExcel操作の例
次は、配列に入った値を順番にExcelへ書き込む例です。 for…of文を使うことで、処理内容が直感的になります。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const names = ["田中", "佐藤", "鈴木"];
let row = 1;
for (const name of names) {
sheet.getRange(`B${row}`).setValue(name);
row++;
}
}
配列の中身を順番に処理するため、 「誰の名前を処理しているか」が分かりやすいのが特徴です。
7. forとfor…ofの使い分けポイント
for文は「回数」や「行番号」を重視する処理に向いています。 一方、for…of文は「データの中身」を順番に扱いたいときに便利です。
Office ScriptsでExcel操作をするときは、 表の構造や処理内容に合わせて使い分けることが大切です。
8. ループ処理を理解するとExcel自動化が一気に楽になる
ループ処理を使えるようになると、 数十行、数百行のExcel操作を一瞬で終わらせられます。
Office ScriptsとTypeScriptのfor文・for…of文は、 Excel自動化の基礎であり、作業効率を大きく変える重要なポイントです。 Excelの画面を思い浮かべながらコードを書くことで、自然と理解が深まります。
まとめ
今回の記事では、Excel Onlineの自動化ツールであるOffice Scriptsを用いて、効率的に業務を改善するための「ループ処理」について詳しく解説しました。プログラミング初心者の方にとって、最初は「繰り返し」という概念が少し難しく感じるかもしれませんが、実は私たちが日常的にExcelで行っている「上から順番にデータを確認して、特定の文字を入力する」という作業そのものです。
Office Scriptsでの繰り返し処理の重要性
Excelの業務自動化において、ループ処理(for文やfor…of文)をマスターすることは、脱・初心者への第一歩と言えます。例えば、100行あるデータに対して、特定の条件に一致するものだけ色を変えたり、合計を計算したりする場合、手作業では時間がかかりますし、入力ミスも発生しやすくなります。しかし、Office Scriptsでループ処理を記述すれば、コンピューターが正確かつ一瞬で全ての行を処理してくれます。
特に現代のビジネスシーンでは、DX(デジタルトランスフォーメーション)が推進されており、クラウド上でのExcel操作を自動化できるOffice Scriptsの需要は非常に高まっています。VBA(Visual Basic for Applications)に慣れている方も、TypeScriptベースのOffice Scriptsを学ぶことで、Web版ExcelやPower Automateとの連携など、活用の幅が格段に広がります。
for文とfor…of文の使い分けを再確認
記事の中で紹介した通り、ループ処理には主に2つのパターンがあります。それぞれの特徴を理解して、状況に応じて使い分けるのがスマートなコードを書くコツです。
- for文:「i」という変数を使って、「1行目から10行目まで」といった具合に回数やインデックス(番号)を細かく制御したい時に最適です。
- for…of文:「データの集まり(配列)」から中身を一つずつ取り出す時に使います。行番号を意識せずに済むため、コードが読みやすく、ミスが減るメリットがあります。
実践的なサンプルコード:データの条件判定と自動入力
まとめとして、もう少し実戦に近いコードを見てみましょう。テストの点数が並んでいるリストを想定し、80点以上なら「合格」と入力する処理をfor文で書いてみます。Office Scriptsの基本構造であるmain関数の中に記述します。
function main(workbook: ExcelScript.Workbook) {
// アクティブなワークシートを取得
const sheet = workbook.getActiveWorksheet();
// 1行目から10行目までをループで回す
for (let i = 1; i <= 10; i++) {
// A列のセルから点数を取得
let score = sheet.getRange(`A${i}`).getValue() as number;
// もし80点以上なら、B列に「合格」と書き込む
if (score >= 80) {
sheet.getRange(`B${i}`).setValue("合格");
// セルの背景色を薄い青色に変更(おまけの装飾)
sheet.getRange(`B${i}`).getFormat().getFill().setColor("#D9EAD3");
} else {
sheet.getRange(`B${i}`).setValue("不合格");
}
}
}
このコードでは、getRangeメソッドにテンプレートリテラル(バッククォートを使った書き方)を利用して、変数iを組み込んでいます。これにより、ループが回るたびに「A1」「A2」「A3」……と参照先が自動で切り替わります。これがループ処理の醍醐味ですね。
VBAから移行する方へのヒント
もしあなたがExcel VBAに慣れているなら、Office Scriptsの書き方に戸惑うかもしれません。VBAでのFor Next構文と比較してみましょう。考え方は全く同じです。
Sub CheckScores()
Dim i As Integer
For i = 1 To 10
If Cells(i, 1).Value >= 80 Then
Cells(i, 2).Value = "合格"
Else
Cells(i, 2).Value = "不合格"
End If
Next i
End Sub
VBAのCells(i, 1)が、Office ScriptsではgetRange(`A${i}`)に対応しているイメージを持つと理解がスムーズです。Office ScriptsはWeb標準の技術(TypeScript)を使っているため、一度覚えてしまえば、将来的に他のWeb開発やアプリ開発にも役立つスキルとなります。
最後に:一歩ずつ自動化の幅を広げよう
プログラミングの学習で大切なのは、実際に手を動かしてコードを書いてみることです。まずは5行、10行といった短い範囲のループから試してみてください。自分の書いたコードでExcelのセルがパラパラと埋まっていく様子を見るのは、とても爽快で楽しい経験になるはずです。
Office Scriptsを使いこなせれば、毎日行っている定型業務を「ボタンひとつ」で終わらせることができます。浮いた時間でよりクリエイティブな仕事に取り組んだり、早めに帰宅してリフレッシュしたりと、あなたのワークスタイルをより良く変えていくきっかけにしてください。
生徒
「先生、ありがとうございました!for文を使うと、今まで手作業でコピペしていた作業がこんなに短いコードで書けるんですね。iが1、2、3……と増えていく仕組みが分かったら、なんだかパズルみたいで楽しくなってきました。」
先生
「その感覚、とても大切ですよ!パズルのピースを組み合わせるように、どの範囲を繰り返すかを指定してあげるだけです。最初はエラーが出ることもありますが、それはコンピューターが『指示が少し曖昧だよ』と教えてくれているだけなので、怖がる必要はありません。」
生徒
「そう言ってもらえると安心します。for…of文の方は、データのリストをそのまま扱えるから、名簿の処理とかに向いていそうですね。使い分けも意識してみます!」
先生
「素晴らしいですね。もし大量のデータを扱うときは、1セルずつ操作するよりも、一度に配列に読み込んで処理する『一括処理』というテクニックもあります。でも、まずは今回のループ処理で1行ずつ確実に操作できるようになることが、上達への最短ルートです。」
生徒
「はい!明日からの実務で、まずは簡単な進捗管理の表を自動化してみようと思います。Office Scriptsがあれば、Web版のExcelでも自動化できるから、場所を選ばずに仕事ができて便利ですね。」
先生
「その通り。クラウド時代の自動化スキルは、一生の武器になります。分からないことがあったら、またいつでも聞いてくださいね。応援しています!」