カテゴリ: Office Scripts 更新日: 2026/02/06

Office Scriptsで行列追加・削除を自動化!Excelセル操作を初心者向けにやさしく解説

行列追加・削除を自動化するスクリプト
行列追加・削除を自動化するスクリプト

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

生徒

「Office ScriptsでExcelの操作を自動化したいんですが、どんなコードを書けばいいんですか?」

先生

「Office ScriptsはTypeScriptという言語を使ってExcelのセルやシートを操作できますよ。簡単なコードで Excel を動かせます。」

生徒

「どんなふうにExcelを自動化するんですか?」

先生

「それでは、Office Scriptsの基本的な書き方を一緒に見ていきましょう!」

1. Office Scriptsとは?

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

Office Scriptsは、Excel Onlineで使える自動化スクリプトです。Excelの「自動化」タブからスクリプトを実行でき、セルの値の変更、シートの作成、表(テーブル)の追加など、多くの作業を自動で行えます。プログラムが初めての人でも、身近なExcelの操作をコードに置き換えるだけで便利な処理が書けるようになります。

これまでは、Excelの自動化といえば「VBA(マクロ)」が主流でした。しかし、Office Scriptsはブラウザ版のExcelでも動作し、Microsoft 365の他のサービス(Power Automateなど)と連携しやすいという大きなメリットがあります。クラウド上で動くため、インストール作業も不要で、どこからでも最新の自動化処理を共有・利用することが可能です。プログラミング未経験の方にとって、最初の壁となる環境構築が必要ない点は、学習を始める上で非常に大きな魅力と言えるでしょう。

2. セルへのデータ入力と取得の基本をマスターしよう

2. セルへのデータ入力と取得の基本をマスターしよう
2. セルへのデータ入力と取得の基本をマスターしよう

まずは、Excel操作の基本中の基本である「セルに値を書く」ことと「セルの値を読み取る」方法について学びましょう。プログラムの世界では、値を書くことを「セット(Set)」、値を読み取ることを「ゲット(Get)」と呼ぶことが多いです。Excelの特定のマス目(セル)を指し示すには、住所のような役割を果たす「アドレス」を使います。例えば、一番左上のマス目は「A1」と呼びますね。

Office Scriptsでセルを操作する際は、まず「今開いているワークブック(ファイル全体)」を捕まえ、次に「特定のシート」を選び、最後に「セル(レンジ)」を指定するという順番で命令を出します。これは、大きな図書館から、特定の棚を探し、その中の一冊の本を手に取るようなイメージです。


function main(workbook: ExcelScript.Workbook) {
  // 1. 現在アクティブな(開いている)シートを取得します
  let sheet = workbook.getActiveWorksheet();

  // 2. A1セルに「Hello World」という文字を書き込みます
  sheet.getRange("A1").setValue("Hello World");

  // 3. B1セルに数字の「100」を書き込みます
  sheet.getRange("B1").setValue(100);
}

上記のコードを実行すると、Excelの画面上に文字や数字がパッと現れます。`setValue`という命令が、指定した場所に値を置く役割を担っています。逆に、セルにある情報をプログラム側に取り込みたいときは、次のようなコードを書きます。


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

  // A1セルの値を取得して、変数「val」に保存します
  let val = sheet.getRange("A1").getValue();

  // 取得した値をコンソール(ログ出力画面)に表示します
  console.log("A1セルの内容は:" + val);
}

このように、`getValue()`を使うことで、Excelの中にある情報をプログラムの中で再利用できるようになります。これが自動計算や条件分岐の第一歩となります。

3. 行の追加と削除!表の形を自由に変える

3. 行の追加と削除!表の形を自由に変える
3. 行の追加と削除!表の形を自由に変える

データを整理していると、新しいデータを入れるために行を挿入したり、不要なデータを一行丸ごと消したりする作業が発生します。これを手作業で行うのは面倒ですが、Office Scriptsなら一瞬で終わります。行の操作を行う際は、`insertRow`(行の挿入)や`delete`(削除)といった命令を使います。

「行」は英語で「Row(ロウ)」、「列」は「Column(カラム)」と言います。これらは非常によく使う用語なので、セットで覚えておくと便利です。例えば、2行目の上に新しい空行を作りたい場合は、2行目の範囲を指定して「ここに追加して!」という命令を出します。列の場合も同様で、特定の列を指定して追加・削除が可能です。


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

  // 3行目に新しい行を1行挿入します
  // ExcelScript.InsertShiftDirection.down は「既存の行を下にずらす」という意味です
  sheet.getRange("3:3").insert(ExcelScript.InsertShiftDirection.down);

  // C列を削除します
  // ExcelScript.DeleteShiftDirection.left は「右側の列を左に詰める」という意味です
  sheet.getRange("C:C").delete(ExcelScript.DeleteShiftDirection.left);
}

ここで出てきた`InsertShiftDirection`や`DeleteShiftDirection`という難しい言葉は、「データをどっちの方向にずらすか?」を決めるための設定です。行を追加したら下の行はさらに下に下がりますし、列を消したら右側の列が左に寄ってきますよね。その動きをプログラムに詳しく教えてあげているのです。

4. レンジ(範囲)を指定して一気に計算する

4. レンジ(範囲)を指定して一気に計算する
4. レンジ(範囲)を指定して一気に計算する

一つのセルだけでなく、複数のセルをまとめて扱うことを「レンジ(Range)」と呼びます。例えば、「A1からB10まで」といった広い範囲を指定して、色を塗ったり計算したりすることができます。初心者がまず覚えたいのは、セル同士の計算結果を別のセルに書き出す方法です。

例えば、売上金額と消費税を計算して、合計金額を出すといった処理を考えてみましょう。プログラムを使えば、一つ一つのセルに手書きで数式を入れなくても、スクリプトを実行するだけで全ての行に対して一括で計算を行うことが可能です。これは「繰り返し処理」という技術を使いますが、まずはシンプルな「セルの値を計算して代入する」流れを確認しましょう。


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

  // A2に単価(500)、B2に個数(3)が入っているとします
  let price = sheet.getRange("A2").getValue() as number;
  let count = sheet.getRange("B2").getValue() as number;

  // 計算を行います(単価 × 個数)
  let total = price * count;

  // C2に計算結果を書き込みます
  sheet.getRange("C2").setValue(total);
  
  // セルに数式を直接入れることもできます
  sheet.getRange("D2").setFormula("=SUM(A2:C2)");
}

上記の例で `as number` という書き方が出てきました。これは「このセルの値は数字として扱いますよ」という宣言です。Office Scripts(TypeScript)は非常に几帳面な性格をしており、中身が文字なのか数字なのかをはっきりさせておかないと、計算の途中で「これって数字なの?」と迷ってしまうことがあります。そのため、計算をするときは「これは数字だよ!」と教えてあげるとスムーズに動きます。

5. オートフィル機能で連続データを自動生成

5. オートフィル機能で連続データを自動生成
5. オートフィル機能で連続データを自動生成

Excelの便利な機能に「オートフィル」があります。セルの右下をドラッグして、日付や連番を連続して入力するあの機能です。実は、Office Scriptsでもこのオートフィルを再現できます。例えば、1行目に「1月」と書いた後、12月まで自動で埋めるような処理です。これを自動化できれば、毎月のレポート作成がぐっと楽になります。

スクリプトでオートフィルを使うときは、`autoFill`という命令を使います。「どこからどこまで」をコピー元にするか、そして「どこまで」引き伸ばすかを指定します。これにより、単なるコピー&ペーストだけでなく、日付の加算や数値のパターンを読み取った連続入力が可能になります。


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

  // A1セルに「1」を入力
  sheet.getRange("A1").setValue(1);
  // A2セルに「2」を入力
  sheet.getRange("A2").setValue(2);

  // A1:A2のパターンを読み取って、A10まで連続数字を入力します
  let sourceRange = sheet.getRange("A1:A2");
  let targetRange = sheet.getRange("A1:A10");
  sourceRange.autoFill(targetRange, ExcelScript.AutoFillType.fillSeries);
}

このように、`fillSeries`(連続データで埋める)というオプションを指定することで、Excelに「法則性を読み取ってね!」とお願いすることができます。単に同じ内容をコピーしたい場合は `fillCopy` を使います。用途に合わせて使い分けるのがポイントです。

6. 実践的なデータの並べ替えとフィルタリング

6. 実践的なデータの並べ替えとフィルタリング
6. 実践的なデータの並べ替えとフィルタリング

大量のデータが並んでいるとき、特定の条件でデータを絞り込んだり、並び替えたりする作業は頻繁に行われます。Office Scriptsでは、これらも数行のコードで実現可能です。例えば「売上順に並べる」「特定の担当者のデータだけ表示する」といった操作です。プログラムに任せることで、ミスなく確実に整理された表を手に入れることができます。

並べ替え(ソート)を行うには、`getSort()`という機能を使います。これを使うと、どの列を基準にするか(例えば金額の列)、昇順(小さい順)か降順(大きい順)かを細かく指定できます。また、フィルタリングは「オートフィルター」と同じ働きをします。特定の文字を含む行だけを残して、あとは隠してしまう処理です。これらを組み合わせれば、複雑なデータ分析の準備を一瞬で整えることができます。


function main(workbook: ExcelScript.Workbook) {
  let sheet = workbook.getActiveWorksheet();
  let range = sheet.getUsedRange(); // データが入っている全範囲を自動で取得

  // 1列目(A列)を基準に、大きい順(降順)に並べ替えます
  range.getSort().apply([{ key: 0, ascending: false }]);

  // 2列目(B列)に「完了」という文字が入っているデータだけを抽出します
  let filter = sheet.getAutoFilter();
  filter.apply(range, 1, { filterOn: ExcelScript.FilterOn.custom, criterion1: "完了" });
}

実行結果のイメージは以下のようになります。


(実行結果)
・データがA列の値が大きい順に再配置されました。
・B列が「完了」以外の行が非表示になり、必要な情報だけが画面に残りました。

これで、手作業で何度もフィルターをクリックする手間から解放されます。自動化の恩恵を最も感じやすい部分かもしれません。

7. スクリプトを保存して再利用するためのコツ

7. スクリプトを保存して再利用するためのコツ
7. スクリプトを保存して再利用するためのコツ

せっかく書いたスクリプトも、一度きりで終わってはもったいないです。Office Scriptsの良さは、名前を付けて保存し、いつでもボタン一つで呼び出せる点にあります。また、作成したスクリプトはチームメンバーに共有することもできます。自分が作った便利な道具を他の人に使ってもらうことで、チーム全体の業務効率を上げることができるのです。

スクリプトを作成する際のコツは、できるだけ「汎用性(はんようせい)」を持たせることです。汎用性とは、特定の場合だけでなく、色々な場面で使いまわせる性質のことです。例えば、「A1セル」と決め打ちするのではなく、現在選択しているセルに対して処理を行うように書けば、どんな表でもそのスクリプトが役立つようになります。こうした工夫を少しずつ重ねることで、あなたのスクリプトはより強力なツールへと進化していきます。

プログラミング未経験の方は、最初はコードが呪文のように見えるかもしれません。しかし、一つ一つの単語の意味を調べていくと、実はとても論理的でシンプルな指示の集まりであることに気づくはずです。まずは小さな書き換えから始めて、少しずつ自分の思い通りにExcelを操る楽しさを体験してみてください。エラーが出ても大丈夫です。エラーメッセージは「ここを直せばもっと良くなるよ」というヒントに過ぎません。焦らず、一歩ずつ進んでいきましょう。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.4
Java&Spring記事人気No4
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法