如果选中了复选框,则复制单元格值并将其粘贴到另一个单元格,如果未选中,则输入特定值

问题描述 投票:0回答:1

sheet1 中有数据,A 列中有复选框。单元格 B2 中有一个搜索字段。该单元格 B2 引用了过滤器函数。过滤器功能位于单元格 B4 中。因此,当我搜索特定单词时,它将填充或返回值到单元格 B5、C5 和 D5。

所以我正在寻找的是,当复选框 A5 被选中/为真时,将 C5 上的单元格值仅作为静态数据复制到单元格 G5,如果未选中,则输入“豁免”一词。我的目标是,即使在脚本运行后 C5 上的值发生变化,我也想使用单元格 G5 中复制的值作为不同公式中的静态引用。

这是我当前的公式,它实际上与 onEdit 触发器一起使用,但我的问题是,当快速选中或取消选中复选框时,值不会改变,并且需要很长时间,例如超过 30 秒更新。有时根本不会做出任何改变

function selecteditem (e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var pasteSheet = ss.getSheetByName("Sheet1");
  var editedCell = e.range;

    if (pasteSheet.getName() == "Sheet1") {
      if (editedCell.getA1Notation() == "A5") {
        if (editedCell.isChecked()) {
          var valueToCopy = pasteSheet.getRange("C5").getValue();
          pasteSheet.getRange("G5").setValue(valueToCopy);
        } else {
          pasteSheet.getRange("G5").setValue("Exempt");
        }
      }
  }

Sample Sheet data

google-sheets google-apps-script
1个回答
0
投票

试试这个:

function selecteditem(e) {
  const sh = e.range.getSheet();
  if (sh.getName() == "Sheet1" && e.range.columnStart == 1 && e.range.rowStart == 5) {
    if (e.value == "TRUE")
      sh.getRange("G5").setValue(sh.getRange("C5").getValue(););
  } else {
    sh.getRange("G5").setValue("Exempt");
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.