Обработка динамических массивов и разлива с помощью API JavaScript для Excel

В этой статье представлен пример кода, который обрабатывает динамические массивы и разлив диапазонов с помощью API JavaScript для Excel. Полный список свойств и методов, поддерживаемых объектом, см. в 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 работает, только если объект диапазона является одной ячейкой. Вызов getSpillParent диапазона с несколькими ячейками приведет к ошибке (или возвращается диапазон NULL для Range.getSpillParentOrNullObject).

См. также