Есть ли способ использовать Excel.run () внутри пользовательской функции? - PullRequest
0 голосов
/ 21 мая 2019

В результате моей пользовательской функции я хочу заполнить несколько ячеек рабочего листа, взяв ячейку, для которой была вызвана функция, в качестве базовой. Я должен вернуть некоторые сложные данные, которые не поместятся в одну ячейку.

Итак, вопрос: есть ли способ использовать Excel.run () внутри пользовательской функции? Или есть способ вернуть более сложные данные (объекты, массив объектов) в качестве возвращаемого значения пользовательской функции?

Это простой пример того, что я пытаюсь сделать, но это не работает:

/**
 * Adds two numbers.
 * @customfunction
 * @param first First number
 * @param second Second number
 * @returns The sum of the two numbers.
 */
async function add(first: number, second: number): Promise<void> {
  return Excel.run(async context => {
    const worksheet = context.workbook.worksheets.getActiveWorksheet();
    const range = worksheet.getRangeByIndexes(0, 0, 1, 4);
    range.values = [[1, 2, 3, 4]];

    return context.sync();
  })
}
CustomFunctions.associate("ADD", add);

1 Ответ

0 голосов
/ 21 мая 2019

Пока невозможно работать с объектной моделью Excel из пользовательской функции.Для вашего сценария, насколько я понимаю, вы можете вернуть несколько значений, возвращая матрицу с номером типа [] [] и ввести формулу в сетке Excel в виде формулы массива (используя Ctrl + Shift + Enter).Когда функция динамических массивов станет широко доступной, формула массива больше не понадобится, и результат автоматически «разлит» по соседним ячейкам.Динамические массивы в настоящее время находятся в предварительном просмотре в сборках Office Insider.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...