我想做的只是为了在接下来的步骤中轻松地进行查找和替换。否则,就没有理由这样做。
我试图取一个单元格范围的值,并将它们放入一个公式中。例如:
=VLOOKUP($A2,IMPORTRANGE("<placeholder_value>","Sheet!A:B"),2,0)
因此,如果我有一个表格如下:
| id | group | formula |
| -- | ------ | ------- |
| 1 | GROUP1 | |
| 2 | GROUP1 | |
| 3 | GROUP1 | |
| 4 | GROUP1 | |
| 5 | GROUP1 | |
| 6 | GROUP2 | |
| 7 | GROUP2 | |
| 8 | GROUP2 | |
| 9 | GROUP2 | |
| 10 | GROUP2 | |
我希望id <=5
的公式是:
=VLOOKUP($A2,IMPORTRANGE("GROUP1","Sheet!A:B"),2,0)
我希望id >5
的公式是:
=VLOOKUP($A2,IMPORTRANGE("GROUP2","Sheet!A:B"),2,0)
然后,当我为GROUP1
和GROUP2
生成单独的文件时,我可以在MASTER
中找到具有实际文档ID的替换,并通过VLOOKUP
链接文档,使得GROUP1
和GROUP2
中的更新反映在MASTER
中这是一个过于简单化的例子
到目前为止,我所尝试的是:
let placeholderRange = this.sheet.getRange(2, this.groupColumn, this.lastRow - 1, 1);
let formula = '=' + placeholderRange.getValue();
// let formula = '=' + placeholderRange.getValues();
// let formula = '=' + placeholderRange.getDisplayValue();
// let formula = '=' + placeholderRange.getDisplayValues();
formulaRange.setFormula(formula);
在.getValue()
和.getDisplayValue()
的情况下,它只使用它找到的第一个值,因此它会在每个公式中放入GROUP1
,而不是在到达这些记录时更改为GROUP2
。
在.getValues()
和.getDisplayValues()
的情况下,它只是将该范围内的所有值的数组添加到公式中。
我可以用for
循环做我想要做的事情,但一开始尽量避免,因为这会减慢自动化速度。
关于如何做到这一点,有什么建议吗?
我相信您的目标如下。
-
您希望通过降低流程成本来转换以下情况。
-
来自
id group formula 1 GROUP1 2 GROUP1 3 GROUP1 4 GROUP1 5 GROUP1 6 GROUP2 7 GROUP2 8 GROUP2 9 GROUP2 10 GROUP2
-
至
id group formula 1 GROUP1 =VLOOKUP($A2,IMPORTRANGE("GROUP1","Sheet!A:B"),2,0) 2 GROUP1 =VLOOKUP($A2,IMPORTRANGE("GROUP1","Sheet!A:B"),2,0) 3 GROUP1 =VLOOKUP($A2,IMPORTRANGE("GROUP1","Sheet!A:B"),2,0) 4 GROUP1 =VLOOKUP($A2,IMPORTRANGE("GROUP1","Sheet!A:B"),2,0) 5 GROUP1 =VLOOKUP($A2,IMPORTRANGE("GROUP1","Sheet!A:B"),2,0) 6 GROUP2 =VLOOKUP($A2,IMPORTRANGE("GROUP2","Sheet!A:B"),2,0) 7 GROUP2 =VLOOKUP($A2,IMPORTRANGE("GROUP2","Sheet!A:B"),2,0) 8 GROUP2 =VLOOKUP($A2,IMPORTRANGE("GROUP2","Sheet!A:B"),2,0) 9 GROUP2 =VLOOKUP($A2,IMPORTRANGE("GROUP2","Sheet!A:B"),2,0) 10 GROUP2 =VLOOKUP($A2,IMPORTRANGE("GROUP2","Sheet!A:B"),2,0)
-
根据您的脚本,我认为您的脚本可能是作为类中的方法创建的。如果我的理解是正确的,那么下面的修改如何?
发件人:
let placeholderRange = this.sheet.getRange(2, this.groupColumn, this.lastRow - 1, 1);
let formula = '=' + placeholderRange.getValue();
// let formula = '=' + placeholderRange.getValues();
// let formula = '=' + placeholderRange.getDisplayValue();
// let formula = '=' + placeholderRange.getDisplayValues();
formulaRange.setFormula(formula);
收件人:
const range = this.sheet.getRange(2, this.groupColumn, this.lastRow - 1, 1);
const formulas = range.getValues().map(([v]) => [`=VLOOKUP($A2,IMPORTRANGE("${v}","Sheet!A:B"),2,0)`]);
range.offset(0, 1, formulas.length, 1).setFormulas(formulas);
- 在这个修改后的脚本中,当
this.groupColumn
是";组";,CCD_ 18的公式是使用列"0"的值创建的;组">
参考文献:
- map((
- 设置公式(公式(