Excel JavaScript API を使用して範囲を操作する

この記事では、Excel JavaScript API を使用して、範囲の一般的なタスクを実行する方法のサンプル コードを提供します。 Range オブジェクトがサポートするプロパティとメソッドの完全な一覧については、「Range オブジェクト (JavaScript API for Excel)」を参照してください。

範囲を取得する

次の例では、ワークシート内の範囲への参照を取得する、さまざまな方法を示しています。

アドレスによって範囲を取得する

次のコード サンプルでは、Sample という名前のワークシートからアドレス B2:B5 の範囲を取得し、address プロパティを読み込んで、コンソールにメッセージを書き込みます。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange("B2:C5");
    range.load("address");

    return context.sync()
        .then(function () {
            console.log(`The address of the range B2:C5 is "${range.address}"`);
        });
}).catch(errorHandlerFunction);

名前によって範囲を取得する

次のコード サンプルでは、Sample という名前のワークシートから MyRange という名前の範囲を取得し、address プロパティを読み込んで、コンソールにメッセージを書き込みます。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange("MyRange");
    range.load("address");

    return context.sync()
        .then(function () {
            console.log(`The address of the range "MyRange" is "${range.address}"`);
        });
}).catch(errorHandlerFunction);

使用範囲を取得する

次のコード サンプルでは、Sample という名前のワークシートから使用範囲を取得し、address プロパティを読み込んで、コンソールにメッセージを書き込みます。 使用範囲とは、値または書式設定が割り当てられているワークシート内のセルを含む、最小の範囲です。 ワークシート全体が空白の場合、getUsedRange() メソッドは、ワークシートの左上のセルのみで構成される範囲を返します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getUsedRange();
    range.load("address");

    return context.sync()
        .then(function () {
            console.log(`The address of the used range in the worksheet is "${range.address}"`);
        });
}).catch(errorHandlerFunction);

範囲全体を取得する

次のコード サンプルでは、Sample という名前のワークシートからワークシートの範囲全体を取得し、address プロパティを読み込んで、コンソールにメッセージを書き込みます。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange();
    range.load("address");

    return context.sync()
        .then(function () {
            console.log(`The address of the entire worksheet range is "${range.address}"`);
        });
}).catch(errorHandlerFunction);

セルの範囲を挿入する

次のコードサンプルは、場所 B4:E4 にセルの範囲を挿入し、他のセルを下にシフトして、新しいセルのためのスペースを提供します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange("B4:E4");

    range.insert(Excel.InsertShiftDirection.down);

    return context.sync();
}).catch(errorHandlerFunction);

範囲を挿入する前のデータ

範囲を挿入する前の Excel のデータ

範囲を挿入した後のデータ

範囲を挿入した後の Excel のデータ

セルの範囲をクリアする

次のコード サンプルは、範囲 E2:E5 のセルの内容と書式をすべてクリアします。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange("E2:E5");

    range.clear();

    return context.sync();
}).catch(errorHandlerFunction);

範囲をクリアする前のデータ

範囲をクリアする前の Excel のデータ

範囲をクリアした後のデータ

範囲をクリアした後の Excel のデータ

セルの範囲を削除する

次のコード サンプルは、範囲 B4:E4 のセルを削除し、他のセルを上にシフトして、削除されたセルのために空いたスペースに入力します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange("B4:E4");

    range.delete(Excel.DeleteShiftDirection.up);

    return context.sync();
}).catch(errorHandlerFunction);

範囲を削除する前のデータ

範囲を削除する前の Excel のデータ

範囲を削除した後のデータ

範囲を削除した後の Excel のデータ

選択範囲を設定する

次のコード サンプルは、作業中のワークシートの範囲 B2:E6 を選択します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getActiveWorksheet();
    var range = sheet.getRange("B2:E6");

    range.select();

    return context.sync();
}).catch(errorHandlerFunction);

選択範囲 B2:E6

Excel の選択範囲

選択範囲を取得する

次のコード サンプルでは、選択範囲を取得し、address プロパティを読み込んで、コンソールにメッセージを書き込みます。

Excel.run(function (context) {
    var range = context.workbook.getSelectedRange();
    range.load("address");

    return context.sync()
        .then(function () {
            console.log(`The address of the selected range is "${range.address}"`);
        });
}).catch(errorHandlerFunction);

値または数式を設定する

次の例は、1 つのセルまたはセルの範囲の値と数式を設定する方法を示しています。

1 つのセルの値を設定する

次のコード サンプルでは、セル C3 の値を "5" に設定し、データに最も適した列の幅を設定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");

    var range = sheet.getRange("C3");
    range.values = [[ 5 ]];
    range.format.autofitColumns();

    return context.sync();
}).catch(errorHandlerFunction);

セルの値が更新される前のデータ

セルの値が更新される前の Excel のデータ

セルの値が更新された後のデータ

セルの値が更新された後の Excel のデータ

複数のセルの範囲の値を設定する

次のコード サンプルでは、範囲 B5:D5 のセルの値を設定し、データに最も適した列の幅を設定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");

    var data = [
        ["Potato Chips", 10, 1.80],
    ];

    var range = sheet.getRange("B5:D5");
    range.values = data;
    range.format.autofitColumns();

    return context.sync();
}).catch(errorHandlerFunction);

複数のセルの値が更新される前のデータ

複数のセルの値が更新される前の Excel のデータ

複数のセルの値が更新された後のデータ

複数のセルの値が更新された後の Excel のデータ

1 つのセルの数式を設定する

次のコード サンプルでは、セル E3 の数式を設定し、データに最も適した列の幅を設定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");

    var range = sheet.getRange("E3");
    range.formulas = [[ "=C3 * D3" ]];
    range.format.autofitColumns();

    return context.sync();
}).catch(errorHandlerFunction);

セルの数式が設定される前のデータ

セルの数式が設定される前の Excel のデータ

セルの数式が設定された後のデータ

セルの数式が設定された後の Excel のデータ

セルの範囲の数式を設定する

次のコード サンプルでは、範囲 E2:E6 のセルの数式を設定し、データに最も適した列の幅を設定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");

    var data = [
        ["=C3 * D3"],
        ["=C4 * D4"],
        ["=C5 * D5"],
        ["=SUM(E3:E5)"]
    ];

    var range = sheet.getRange("E3:E6");
    range.formulas = data;
    range.format.autofitColumns();

    return context.sync();
}).catch(errorHandlerFunction);

複数のセルの数式が設定される前のデータ

複数のセルの数式が設定される前の Excel のデータ

複数のセルの数式が設定された後のデータ

複数のセルの数式が設定された後の Excel のデータ

値、テキスト、または数式を取得する

次の例は、セルの範囲から値、テキスト、および数式を取得する方法を示しています。

セルの範囲から値を取得する

次のコード サンプルでは、範囲 B2:E6 を取得し、values プロパティを読み込んで、コンソールに値を書き込みます。 範囲の values プロパティは、セルに含まれる未処理の値を指定します。 範囲内の一部のセルに数式が含まれている場合でも、範囲の values プロパティは、それらのセルの未処理の値 (数式ではなく) を指定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange("B2:E6");
    range.load("values");

    return context.sync()
        .then(function () {
            console.log(JSON.stringify(range.values, null, 4));
        });
}).catch(errorHandlerFunction);

範囲内のデータ (列 E の値は数式の結果)

複数のセルの数式が設定された後の Excel のデータ

range.values (上記のコード サンプルによりコンソールに記録される)

[
    [
        "Product",
        "Qty",
        "Unit Price",
        "Total Price"
    ],
    [
        "Almonds",
        2,
        7.5,
        15
    ],
    [
        "Coffee",
        1,
        34.5,
        34.5
    ],
    [
        "Chocolate",
        5,
        9.56,
        47.8
    ],
    [
        "",
        "",
        "",
        97.3
    ]
]

セルの範囲からテキストを取得する

次のコード サンプルでは、範囲 B2:E6 を取得し、text プロパティを読み込んでコンソールに書き込みます。 範囲の text プロパティは、範囲内のセルの表示値を指定します。 範囲内の一部のセルに数式が含まれている場合でも、範囲の text プロパティは、それらのセルの表示値 (数式ではなく) を指定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange("B2:E6");
    range.load("text");

    return context.sync()
        .then(function () {
            console.log(JSON.stringify(range.text, null, 4));
        });
}).catch(errorHandlerFunction);

範囲内のデータ (列 E の値は数式の結果)

複数のセルの数式が設定された後の Excel のデータ

range.text (上記のコード サンプルによりコンソールに記録される)

[
    [
        "Product",
        "Qty",
        "Unit Price",
        "Total Price"
    ],
    [
        "Almonds",
        "2",
        "7.5",
        "15"
    ],
    [
        "Coffee",
        "1",
        "34.5",
        "34.5"
    ],
    [
        "Chocolate",
        "5",
        "9.56",
        "47.8"
    ],
    [
        "",
        "",
        "",
        "97.3"
    ]
]

セルの範囲から数式を取得する

次のコード サンプルでは、範囲 B2:E6 を取得し、formulas プロパティを読み込んでコンソールに書き込みます。 範囲の formulas プロパティは、数式と数式を含まない範囲のセルの未処理の値が含まれる、範囲内のセルの数式を指定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    var range = sheet.getRange("B2:E6");
    range.load("formulas");

    return context.sync()
        .then(function () {
            console.log(JSON.stringify(range.formulas, null, 4));
        });
}).catch(errorHandlerFunction);

範囲内のデータ (列 E の値は数式の結果)

複数のセルの数式が設定された後の Excel のデータ

range.formulas (上記のコード サンプルによりコンソールに記録される)

[
    [
        "Product",
        "Qty",
        "Unit Price",
        "Total Price"
    ],
    [
        "Almonds",
        2,
        7.5,
        "=C3 * D3"
    ],
    [
        "Coffee",
        1,
        34.5,
        "=C4 * D4"
    ],
    [
        "Chocolate",
        5,
        9.56,
        "=C5 * D5"
    ],
    [
        "",
        "",
        "",
        "=SUM(E3:E5)"
    ]
]

範囲の書式を設定する

次の例は、範囲内のセルのフォントの色、塗りつぶしの色、および数値の書式を設定する方法を示しています。

フォントの色と塗りつぶしの色を設定する

次のコード サンプルは、範囲 B2:E2 のセルのフォントの色と塗りつぶしの色を設定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");

    var range = sheet.getRange("B2:E2");
    range.format.fill.color = "#4472C4";;
    range.format.font.color = "white";

    return context.sync();
}).catch(errorHandlerFunction);

フォントの色と塗りつぶしの色を設定する前の範囲内のデータ

書式設定する前の Excel のデータ

フォントの色と塗りつぶしの色を設定した後の範囲内のデータ

書式設定した後の Excel のデータ

数値の書式を設定する

次のコード サンプルは、範囲 D3:E5 のセルの数値を書式を設定します。

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");

    var formats = [
        ["0.00", "0.00"],
        ["0.00", "0.00"],
        ["0.00", "0.00"]
    ];

    var range = sheet.getRange("D3:E5");
    range.numberFormat = formats;

    return context.sync();
}).catch(errorHandlerFunction);

数値の書式を設定する前の範囲内のデータ

書式設定する前の Excel のデータ

数値の書式を設定した後の範囲内のデータ

書式設定した後の Excel のデータ

その他のリソース