Как настроить диапазон в «Лаборатории сценариев» для надстроек Office Excel, используя переменные (а не жестко заданные значения для ссылок на ячейки) - PullRequest
0 голосов
/ 26 марта 2020

Лаборатория сценариев показывает примеры того, как получить диапазон, используя строки, столбцы и значения ячеек: https://docs.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-ranges-advanced

Однако все значения в примерах были жестко закодированы. Я не мог найти ни на одной странице пример того, как использовать переменные в диапазоне получения? Может быть, это просто javascript вещь, но я совершенно новичок в этом. Кто-нибудь может поделиться примером как сказать? sheet.getRange ("4: 9") с использованием переменных для числа 4 и числа 9?

И если вы знаете ответ на этот вопрос выше, вы также можете поделиться, как это сделать, используя ссылки на ячейки в приведенном ниже пример?

Предположим, что я могу найти значения строк и имен столбцов и установить их в некоторых переменных. Как бы я использовал его в приведенном ниже коде, заменив значения для G1, A1 и E1? sheet.getRange ("G1"). copyFrom ("A1: E1");

Заранее благодарю за помощь!

PS: я уже пробовал поиск по переполнению стека по ключевым словам для "переменные диапазона лаборатории сценария", но не нашли ответов. Отсюда и спрашиваем здесь.

Excel.run (функция (контекст) {var sheet = context.workbook.worksheets.getItem ("Sample");

// Group the larger, main level. Note that the outline controls
// will be on row 10, meaning 4-9 will collapse and expand.
sheet.getRange("4:9").group(Excel.GroupOption.byRows);

// Group the smaller, sublevels. Note that the outline controls
// will be on rows 6 and 9, meaning 4-5 and 7-8 will collapse and expand.
sheet.getRange("4:5").group(Excel.GroupOption.byRows);
sheet.getRange("7:8").group(Excel.GroupOption.byRows);

// Group the larger, main level. Note that the outline controls
// will be on column R, meaning C-Q will collapse and expand.
sheet.getRange("C:Q").group(Excel.GroupOption.byColumns);

// Group the smaller, sublevels. Note that the outline controls
// will be on columns G, L, and R, meaning C-F, H-K, and M-P will collapse and expand.
sheet.getRange("C:F").group(Excel.GroupOption.byColumns);
sheet.getRange("H:K").group(Excel.GroupOption.byColumns);
sheet.getRange("M:P").group(Excel.GroupOption.byColumns);
return context.sync();

}). Catch (errorHandlerFunction );

1 Ответ

0 голосов
/ 27 марта 2020

Итак, я получил ответ на этот вопрос здесь: https://github.com/OfficeDev/office-js-docs-pr/issues/1699

Спасибо AlexJerabek (вы можете найти его идентификатор по ссылке выше на github).

В итоге: метод getRange принимает строку, представляющую диапазон ячеек на листе, например «A1: D4», «A: D» только для столбцов или «1: 4» только для строк. Пока ваши переменные отображаются в строки или столбцы Excel, вы можете использовать конкатенацию строк для построения аргумента. Возможно, вам понадобится использовать range.columnIndex, range.rowIndex и range.getCell для преобразования чисел, начинающихся с нуля, в столбцы на основе букв и обратно.

Основываясь на этом ответе, я попробовал ниже (и это работал):

const sheet = context.workbook.worksheets.getActiveWorksheet();
var firstrow = 1
var lastRow = 6
var range = sheet.getRange(firstrow + ":" + lastRow)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...