【问题标题】:How do I change an inconstant number to 0 a single time?如何一次将一个不定数更改为 0?
【发布时间】:2019-11-02 20:43:00
【问题描述】:

在谷歌表格中,我有一个可以不断变化的姓名和数字表,我正在努力做到这一点,所以当我输入一个人的名字(可以是任何地方)时,该行中的数字将变回 0 , 到目前为止这很容易做到,但问题是在它重置回 0 后,它需要允许数字再次更改,这就是它只需要更改一次数字的原因。

到目前为止,我制定了一个可行的公式:

=IFERROR(IF(A2=VLOOKUP(A2,S$1:S,1, FALSE), -1, 0), 0)

问题是它会从数字中减去 1,所以如果数字是 3,那么它会将数字更改为 2。

=countif(A$1:A, E2) - 计算某人填写表格的次数并将数字相加。 =IFERROR(IF(A2=VLOOKUP(A2,S$1:S,1, FALSE), -1, 0), 0) - 查看是否输入了与其所在行匹配的名称,如果是则减去 1。

例如:假设 Dave 有数字 0 3 6(每个都在自己的单元格中,但在同一行),我将名称“Dave”放在工作表中的任何位置,我想要发生的是数字将是更改为0 0 0(它会执行类似-0, -3, -6 的操作),但在将0 3 6 重置为0 0 0 后继续计数。

请记住,名称会发生​​变化,因此在公式中使用 "Human1" 或类似名称是行不通的。

【问题讨论】:

标签: google-sheets google-sheets-api google-sheets-formula


【解决方案1】:

也许使用 Apps 脚本会对您有所帮助。要在工作表中创建脚本,请转至 Tools > Script editor。我不是 100% 确定我是否理解您的实际问题,但从您的 example 我推断,如果您编写的名称与 A 列中的任何值匹配,它将用 0 替换 B、C 和 D 中的值.

    function onEdit(e) {

      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Final result 1 column");
      var col_A = sheet.getRange("A2:A").getValues();

      var name_typed = e.value; //The value you just typed in the sheet

      for (var i = 0; i < col_A.length; i++){

        if (col_A[i] == name_typed){

          var range = sheet.getRange(i + 2, 2, 1, 3); //row found, first column, number of rows, number of columns
          var formulas = range.getFormulas(); //saves the formulas from B,C,D in the variable

          range.setValues([[0, 0, 0]]); //sets columns to zero
          range.setFormulas(formulas); //sets the formulas back to B,C,D

          break;
        }

      }

上面的脚本获取您在任何工作表中键入的值,将其与“最终结果 1 列”工作表的 A 列进行比较,如果匹配,则将 B、C 和 D 中的值替换为 0。如果这些列有公式,它会将它们保存在一个变量中,以便在设置零后立即写入它们。

如果这些单元格没有任何公式,请在 range.setFormulas... 行注释。

参考文献

【讨论】:

  • 我收到此错误:prntscr.com/psajr7 另外,如果我错了,请纠正我,但似乎只要键入名称,该脚本就会将值重置为0 0 0?如果是这样,它只需要重置一次,然后让数字继续计数。
猜你喜欢
  • 1970-01-01
  • 2021-12-18
  • 2021-12-24
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 2018-09-10
  • 2019-06-20
  • 2023-04-06
相关资源
最近更新 更多