チュートリアル: Excel テーブルを作成して書式設定する
このチュートリアルでは、Office Script for Excel の記録、編集、および記述の基本について説明します。 売上記録ワークシートにいくつか書式設定を適用するスクリプトを記録します。 記録されたスクリプトを編集して、より多くの書式設定を適用し、テーブルを作成して、そのテーブルを並べ替えます。 記録して編集するこのパターンは、Excel のアクションがコードとしてどのように表示されるか確認するための重要なツールです。
前提条件
このチュートリアルでは、Office スクリプトにアクセスする必要があります。 [自動化] タブが表示されない場合は、 プラットフォームのサポート を確認してください。
重要
このチュートリアルは、JavaScript や TypeScript について初級から中級レベルの知識を持つユーザーを対象としています。 JavaScript を使い慣れていない場合は、「Mozilla の JavaScript チュートリアル」から始めることをお勧めします。 スクリプト環境の詳細については、「Office スクリプト コード エディターの環境」を参照してください。
データを追加し、基本スクリプトを記録する
まず、いくつかのデータと小さな開始スクリプトが必要です。
新しい Excel ブックを作成します。
次の果物売上データをコピーし、ワークシートのセル A1 から始まるセル範囲に貼り付けます。
果物 2018 2019 オレンジ 1000 1200 レモン 800 900 ライム 600 500 グレープフルーツ 900 700 [自動化] タブを開きます。[自動化] タブが表示されていない場合は、ドロップダウン矢印を選択して、リボンのオーバーフローを確認します。 それでも表示されない場合は、「Office スクリプトのトラブルシューティング」の記事の説明に従います。
[操作を記録] ボタンを選択します。
セル A2:C2 ("オレンジ" 行) を選択し、塗りつぶしの色をオレンジ色に設定します。
[停止] ボタンを選択して、記録を停止します。
ワークシートは次のようになります (色が違っていても問題ありません)。
既存のスクリプトを編集する
前のスクリプトでは、"オレンジ" の行がオレンジ色になります。 "レモン" の黄色の行を追加します。
[詳細] ウィンドウで、[編集] ボタンを選択します。
次のようなコードが表示されるはずです。
function main(workbook: ExcelScript.Workbook) { // Set fill color to FFC000 for range Sheet1!A2:C2 let selectedSheet = workbook.getActiveWorksheet(); selectedSheet.getRange("A2:C2").getFormat().getFill().setColor("FFC000"); }
このコードは、ブックから現在のワークシートを取得します。 次に、A2:C2 の範囲の塗りつぶしの色を設定します。
範囲は、Excel の Office スクリプトの基本となる部分です。 範囲とは、隣接するセルからなる四角形のブロックで、値、数式、書式設定が含まれます。 範囲はセルの基本構造であり、スクリプト タスクの大部分は範囲を指定することにより実行します。
次の行をスクリプトの最後 (
color
の設定箇所と末尾の}
の間) に追加します。selectedSheet.getRange("A3:C3").getFormat().getFill().setColor("yellow");
[実行] を選択して、スクリプトをテストします。 ブックは次のように表示されるはずです。
テーブルを作成する
次に、この果物の売上データをテーブルに変換します。 チュートリアル全体の最初のスクリプトを変更し続けます。
次の行をスクリプトの最後 (末尾の
}
の前) に追加します。let table = selectedSheet.addTable("A1:C5", true);
この呼び出しは
Table
オブジェクトを返します。 そのテーブルを使用してデータを並べ替えます。 "Fruit" 列の値に基づいて、データを昇順で並べ替えます。 次の行を、テーブル作成の後に追加します。table.getSort().apply([{ key: 0, ascending: true }]);
スクリプトは次のようになります。
function main(workbook: ExcelScript.Workbook) { // Set fill color to FFC000 for range Sheet1!A2:C2 let selectedSheet = workbook.getActiveWorksheet(); selectedSheet.getRange("A2:C2").getFormat().getFill().setColor("FFC000"); selectedSheet.getRange("A3:C3").getFormat().getFill().setColor("yellow"); let table = selectedSheet.addTable("A1:C5", true); table.getSort().apply([{ key: 0, ascending: true }]); }
テーブルには
TableSort
オブジェクトがあり、Table.getSort
メソッドを使用してアクセスできます。 そのオブジェクトに並べ替え条件を適用できます。apply
メソッドは、SortField
オブジェクトの配列を受け取ります。 この場合、並べ替え条件は 1 つだけであるため、使用するSortField
は 1 つだけです。key: 0
値は、並べ替え定義値を持つ列を "0" に設定します (この場合はテーブルの最初の列である列 A)。ascending: true
値は、(降順ではなく) 昇順でデータを並べ替えます。スクリプトを実行します。 テーブルが次のように表示されます。
注:
スクリプトを再実行すると、エラーが表示されます。 これは、別のテーブルの上にテーブルを作成できないためです。 ただし、スクリプトは別のワークシートまたはブックで実行できます。
スクリプトを再実行する
- 現在のブックに新しいワークシートを作成します。
- このチュートリアルの最初にある果物のデータをコピーし、新しいワークシートのセル A1 から始まるセル範囲に貼り付けます。
- スクリプトを実行します。
次の手順
「チュートリアル: Excel ブック データをクリーンアップして正規化する」を完了します。 このチュートリアルでは、Office スクリプトを使用してブックのデータを読み取る方法について説明します。
Office Scripts