次の方法で共有


Excel JavaScript API を使用して動的配列とスピルを処理する

この記事では、Excel JavaScript API を使用して動的配列と範囲スピルを処理するコード サンプルを提供します。 Range オブジェクトがサポートするプロパティとメソッドの完全な一覧については、「Excel.Range クラス」を参照してください。

動的配列

一部の Excel 数式では 、動的配列が返されます。 これにより、数式の元のセルの外側にある複数のセルの値が入力されます。 この値オーバーフローは、"スピル" と呼ばれます。 アドインは、 Range.getSpillingToRange メソッドを使用してスピルに使用される範囲を見つけることができます。 *OrNullObject バージョンRange.getSpillingToRangeOrNullObject

次の例は、セルに範囲の内容をコピーする基本的な数式を示しています。この数式は、隣接するセルに波及します。 その後、アドインはスピルを含む範囲をログに記録します。

await Excel.run(async (context) => {
    let sheet = context.workbook.worksheets.getItem("Sample");

    // Set G4 to a formula that returns a dynamic array.
    let targetCell = sheet.getRange("G4");
    targetCell.formulas = [["=A4:D4"]];

    // Get the address of the cells that the dynamic array spilled into.
    let spillRange = targetCell.getSpillingToRange();
    spillRange.load("address");

    // Sync and log the spilled-to range.
    await context.sync();

    // This will log the range as "G4:J4".
    console.log(`Copying the table headers spilled into ${spillRange.address}.`);
});

範囲スピル

Range.getSpillParent メソッドを使用して、特定のセルにスピルするセルを見つけます。 getSpillParentは、範囲オブジェクトが 1 つのセルである場合にのみ機能します。 セルが複数ある範囲で getSpillParent を呼び出すと、エラーがスローされます (または、 Range.getSpillParentOrNullObjectの場合は null 範囲が返されます)。

関連項目