typescript 在公式中使用变量引用Office脚本中的最后一行

sg2wtvxw  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(144)

我想使用Office指令码(在Excel中),将公式套用至新栏,其中的公式包含寻找相邻栏最大值的函数。收集的数据点数因实验而异,因此我不想设定寻找相邻栏最大值的有限界限(例如MAX(G2:G10))。
理想情况下,我想创建一个行数变量,这样我就可以计算列的最大值,而不管实验中收集的数据点数量如何变化,例如MAX(G2:G(numrows))。
我试着沿着下面的思路应用一些东西:

let rowCount = range.getRowCount();
 const numrows = rowCount

 selectedSheet.getRange("H1:H2").setFormulasLocal([["Air Flow (%)"], ["=(G2/MAX($G$2:$G(numrows)))*100"]]);

我知道这种语法是不正确的,因为它只会导致一个错误(#NAME?),我想知道是否有任何关于哪些变量类型可以使这种方法有效的建议(或其他方法)。
提前感谢!

0x6upsns

0x6upsns1#

您可以尝试以下代码:

function main(workbook: ExcelScript.Workbook) {
  let selectedSheet = workbook.getActiveWorksheet();
  let lastRow = selectedSheet.getRange("G1048576").getRangeEdge(ExcelScript.KeyboardDirection.up).getRowIndex() + 1;
  selectedSheet.getRange("H1:H2").setFormulas([["Air Flow (%)"], [`=(G2/MAX($G$2:$G${lastRow}))*100`]]);
}

我通过在G列的最后一个单元格中按下ctrl键和键盘上的向上键来确定lastRow。在这里,我使用getRowIndex()来获取行索引并将其加1。我需要这样做,因为行索引从0开始,而不是像行号那样从1开始。
一旦我有了lastRow,我就可以更新字符串以使用lastRow变量。从那里,你可以使用setFormulas()来写值/公式。

相关问题