将单元格值添加到某个范围的公式中只使用第一个值



我想做的只是为了在接下来的步骤中轻松地进行查找和替换。否则,就没有理由这样做。

我试图取一个单元格范围的值,并将它们放入一个公式中。例如:

=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)

然后,当我为GROUP1GROUP2生成单独的文件时,我可以在MASTER中找到具有实际文档ID的替换,并通过VLOOKUP链接文档,使得GROUP1GROUP2中的更新反映在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((
  • 设置公式(公式(

相关内容

最新更新