チュートリアル: Excel テーブルを作成して書式設定する

このチュートリアルでは、Office Script for Excel の記録、編集、および記述の基本について説明します。 売上記録ワークシートにいくつか書式設定を適用するスクリプトを記録します。 記録されたスクリプトを編集して、より多くの書式設定を適用し、テーブルを作成して、そのテーブルを並べ替えます。 記録して編集するこのパターンは、Excel のアクションがコードとしてどのように表示されるか確認するための重要なツールです。

前提条件

このチュートリアルでは、Office スクリプトにアクセスする必要があります。 [自動化] タブが表示されない場合は、 プラットフォームのサポート を確認してください。

重要

このチュートリアルは、JavaScript や TypeScript について初級から中級レベルの知識を持つユーザーを対象としています。 JavaScript を使い慣れていない場合は、「Mozilla の JavaScript チュートリアル」から始めることをお勧めします。 スクリプト環境の詳細については、「Office スクリプト コード エディターの環境」を参照してください。

データを追加し、基本スクリプトを記録する

まず、いくつかのデータと小さな開始スクリプトが必要です。

  1. 新しい Excel ブックを作成します。

  2. 次の果物売上データをコピーし、ワークシートのセル A1 から始まるセル範囲に貼り付けます。

    果物 2018 2019
    オレンジ 1000 1200
    レモン 800 900
    ライム 600 500
    グレープフルーツ 900 700
  3. [自動化] タブを開きます。[自動化] タブが表示されていない場合は、ドロップダウン矢印を選択して、リボンのオーバーフローを確認します。 それでも表示されない場合は、「Office スクリプトのトラブルシューティング」の記事の説明に従います。

  4. [操作を記録] ボタンを選択します。

  5. セル A2:C2 ("オレンジ" 行) を選択し、塗りつぶしの色をオレンジ色に設定します。

  6. [停止] ボタンを選択して、記録を停止します。

    ワークシートは次のようになります (色が違っていても問題ありません)。

既存のスクリプトを編集する

前のスクリプトでは、"オレンジ" の行がオレンジ色になります。 "レモン" の黄色の行を追加します。

  1. [詳細] ウィンドウで、[編集] ボタンを選択します。

  2. 次のようなコードが表示されるはずです。

    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 スクリプトの基本となる部分です。 範囲とは、隣接するセルからなる四角形のブロックで、値、数式、書式設定が含まれます。 範囲はセルの基本構造であり、スクリプト タスクの大部分は範囲を指定することにより実行します。

  3. 次の行をスクリプトの最後 (color の設定箇所と末尾の } の間) に追加します。

    selectedSheet.getRange("A3:C3").getFormat().getFill().setColor("yellow");
    
  4. [実行] を選択して、スクリプトをテストします。 ブックは次のように表示されるはずです。

テーブルを作成する

次に、この果物の売上データをテーブルに変換します。 チュートリアル全体の最初のスクリプトを変更し続けます。

  1. 次の行をスクリプトの最後 (末尾の } の前) に追加します。

    let table = selectedSheet.addTable("A1:C5", true);
    
  2. この呼び出しは 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 つだけであるため、使用できるのは 1 つだけ SortFieldです。 key: 0 は、並べ替えを定義する値を含む列を "0" (テーブルの 1 列目。この例では A) に設定します。 ascending: true は、昇順 (降順ではなく) にデータを並べ替えます。

  3. スクリプトを実行します。 テーブルが次のように表示されます。

    並べ替えされたフルーツの販売テーブルを示すワークシート。

    注:

    スクリプトを再実行すると、エラーが表示されます。 これは、テーブルの上に別のテーブルを重ねて作成することはできないためです。 ただし、別のワークシートやブックでスクリプトを実行することはできます。

スクリプトを再実行する

  1. 現在のブックに新しいワークシートを作成します。
  2. このチュートリアルの最初にある果物のデータをコピーし、新しいワークシートのセル A1 から始まるセル範囲に貼り付けます。
  3. スクリプトを実行します。

次の手順

「チュートリアル: Excel ブック データをクリーンアップして正規化する」を完了します。 このチュートリアルでは、Office スクリプトを使用してブックのデータを読み取る方法について説明します。