【问题标题】:How to make Google Sheet drop down value affect other drop down如何使 Google Sheet 下拉值影响其他下拉
【发布时间】:2020-09-16 23:52:04
【问题描述】:

我有 4 个带有 TRUE 或 FALSE 选项的下拉菜单。我正在寻找一个公式,以便如果其中一个为真,其余的将自动设置为假。

因此,在这种情况下,由于 Next Day 为 TRUE,sameday、sd 11am、rush 和 P2P 为 false。如果我将 Sameday 更改为 TRUE,我希望 Next Day 自动更改为 False。这可能吗?

【问题讨论】:

  • 是的,这是可能的。但是您需要在 google apps scripts 中编写脚本,因为每个单元格只能保存 either 一个值或一个函数,但不能同时保存这两者。在脚本中,您可以定义一个函数并使用 onEdit 触发器调用它。
  • @a-burge true,这是唯一的选择。看看我的回答。

标签: javascript google-apps-script google-sheets google-sheets-formula


【解决方案1】:

解释:

  • 无法通过使用 google 表格公式来实现。
  • 您显然需要onEdit() 触发函数,因此请利用Google Apps Script
  • 一旦列表['F2','G2','H2','I2','J2'] 中的单元格被编辑,脚本将检查哪个单元格被编辑,以及新值是TRUE 还是FALSE。如果值为TRUE,那么它将其他单元格的值更改为FALSE。如果新选择的值是FALSE,那么它不会做任何事情。

解决方案:

请按照说明进行操作 (gif)。它们非常简单。

这里是sn-p的代码:

function onEdit(e) {

  const cellR = e.range.getA1Notation()
  const as = e.source.getActiveSheet();
  const sheetName = "Sheet1";
  const cells = ['F2','G2','H2','I2','J2'];
  
  cells.forEach(cell=>{
  var otherCells = cells.filter(val=>val!=cell);
  if(as.getName() == sheetName && cellR ==cell && as.getRange(cell).getDisplayValue() == "TRUE"){
  otherCells.forEach(o_cells=>{as.getRange(o_cells).setValue("FALSE")})}}
  );   
}

请将工作表名称 (sheetName) 调整为您自己的工作表名称。


说明/演示:

请按照以下说明进行设置和使用:

  • 点击工具 => 脚本编辑器
  • 复制粘贴代码 sn-p 到 code.gs 文件,
  • 最后点击保存按钮。


参考资料:

Google Apps 脚本:

JavaScript:

【讨论】:

  • 无关的,@Marios 编辑器里怎么弄暗模式?
  • @a-burge 它是一个 chrome 扩展。谷歌类似于暗模式谷歌脚本编辑器。
  • 谢谢!这会拯救我的眼睛:)
猜你喜欢
  • 1970-01-01
  • 2022-09-28
  • 2018-01-29
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多