我想要做的只是讓我可以輕松地在后續步驟中進行查找和替換。否則,沒有理由這樣做。
我正在嘗試獲取單元格范圍的值并將它們放入公式中。例如:
=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()and的情況下,.getDisplayValue()它只使用它找到的第一個值,所以它會放入GROUP1每個公式,而不是GROUP2在到達這些記錄時更改為。
在.getValues()and的情況下.getDisplayValues(),它只是將一個包含該范圍內所有值的陣列添加到公式中。
我可以用for回圈來做我想做的事情,但最初試圖避免這種情況,因為這會減慢自動化速度。
關于如何實作這一點的任何建議?
uj5u.com熱心網友回復:
我相信你的目標如下。
您希望通過降低流程成本來轉換以下情況。
從
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);
- 在這個修改后的腳本中,when
this.groupColumn是“group”列,公式=VLOOKUP(\$A2,IMPORTRANGE("${v}","Sheet!A:B"),2,0)是使用“group”列的值創建的。
參考:
- 地圖()
- 設定公式(公式)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374813.html
下一篇:如何驗證當前登錄的帳戶是什么?
