0

脚本实验室在此处展示了如何使用行、列和单元格值获取范围的示例: https ://docs.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-ranges -先进的

但是,示例中的所有值都是硬编码的。我在任何页面上都找不到任何关于如何在获取范围内使用变量的示例?也许它是一个简单的 javascript 东西,但我对它完全陌生。谁能分享一个怎么说的例子?sheet.getRange("4:9") 使用数字 4 和数字 9 的变量?

如果您确实知道上面的答案,您还可以分享一下,如何在下面的示例中使用单元格引用来做到这一点?

假设我可以找到行和列名的值并将它们设置在一些变量中。我将如何在下面的代码中使用它来替换 G1、A1 和 E1 的值? sheet.getRange("G1").copyFrom("A1:E1");

提前感谢您的帮助!

PS:我已经尝试使用“脚本实验室范围变量”的关键字搜索堆栈溢出,但没有找到答案。所以在这里问。

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);
4

1 回答 1

0

所以,我在这里得到了答案:https ://github.com/OfficeDev/office-js-docs-pr/issues/1699

感谢 AlexJerabek(你可以在上面的 github 链接上找到他的 id)。

总而言之: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)
于 2020-03-26T21:55:46.500 回答