Как настроить диапазон в Script lab для надстроек Office Excel, используя переменные (а не жестко заданные значения для ссылок на ячейки)

Лаборатория скриптов показывает здесь примеры того, как получить диапазон, используя значения строк, столбцов и ячеек: 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");

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

P.S: Я уже пробовал искать переполнение стека с ключевыми словами для переменных диапазона лаборатории скрипта, но не нашел ответов. Следовательно, спрашивая здесь.

Excel.run(function (context) {
    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);

person Pramod Yadav    schedule 26.03.2020    source источник


Ответы (1)


Итак, я получил ответ здесь: 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)
person Pramod Yadav    schedule 26.03.2020