Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 如何将一个不恒定的数字一次性更改为0?_Google Sheets_Google Sheets Api_Google Sheets Formula - Fatal编程技术网

Google sheets 如何将一个不恒定的数字一次性更改为0?

Google sheets 如何将一个不恒定的数字一次性更改为0?,google-sheets,google-sheets-api,google-sheets-formula,Google Sheets,Google Sheets Api,Google Sheets Formula,在google sheets中,我有一个可以不断更改的姓名和数字表,我正在尝试这样做,当我键入一个人的姓名(可以在任何地方)时,该行中的数字将变回0,到目前为止,这很容易做到,但问题是当它将重置回0后,需要再次允许数字更改,这就是为什么它只需要改变一次数字 到目前为止,我提出了一个可行的公式: =IFERROR(IF(A2=VLOOKUP(A2,S$1:S,1, FALSE), -1, 0), 0) 问题是它会从数字中减去1,所以如果数字是3,那么它会将数字改为2 =countif(A$1:A

在google sheets中,我有一个可以不断更改的姓名和数字表,我正在尝试这样做,当我键入一个人的姓名(可以在任何地方)时,该行中的数字将变回0,到目前为止,这很容易做到,但问题是当它将重置回0后,需要再次允许数字更改,这就是为什么它只需要改变一次数字

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

=IFERROR(IF(A2=VLOOKUP(A2,S$1:S,1, FALSE), -1, 0), 0)
问题是它会从数字中减去1,所以如果数字是3,那么它会将数字改为2

=countif(A$1:A,E2)
-计算一个人填写表单的次数并将数字相加。
=IFERROR(如果(A2=VLOOKUP(A2,S$1:S,1,FALSE),-1,0),0)
-查看是否键入了与其所在行中的名称相匹配的名称,然后再减去1

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


请记住,名称正在更改,因此在公式中使用“Human1”或类似的名称将不起作用。

也许使用应用程序脚本会对您有所帮助。要在工作表中创建脚本,请转到
Tools>scripteditor
。我不能100%确定我是否理解您的实际问题,但从您的示例中,我推断,如果您编写的名称与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;
        }

      }
函数onEdit(e){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“最终结果1列”);
var col_A=sheet.getRange(“A2:A”).getValues();
var name_typed=e.value;//您刚才在工作表中键入的值
对于(变量i=0;i
上面的脚本获取您在任何工作表中键入的值,将其与“最终结果1列”工作表的A列进行比较,如果匹配,则将B、C和D中的值替换为0。如果此列具有公式,则将其保存在变量中,以便在设置零后立即写入

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

参考资料


欢迎使用StackOverflow。请共享您的电子表格副本。您确实没有给我们提供太多的信息;有一个表格,但我们不知道列或单元格,也不知道行数,但输入名称时必须触发“公式”(“可以在任何地方”)在工作表上。公式等。请阅读,然后编辑您的问题,以提供足够的信息,创建一个最低可行的示例。好吧!好了:(我无法上传问题中的图像,因为我没有10分)!!!我可以澄清吗?如果我错了,请纠正我。“”在a列到F列中显示培训数据库。a列、B列和C列由Google表单生成(a列包含用户名)。D列、E列和F列包含相关数值。可以在单元格I2中输入用户名。输入用户名后,“系统”应该在列A中查找此名称,并将该用户的列D、E、F值设置为零。这是正确的!但列A、B和C不是由google表单生成的,“”此表是。您显示的图像默认为
0 0 0
,并且将具有
-X
(X=不恒定的数字)作为在I列中键入与a列1匹配的名称的结果。感谢您的反馈。很抱歉,我对每张工作表的角色、工作表之间的关系、填写每张工作表的方式和时间以及您的问题与特定工作表的关系完全感到困惑。请您共享一份电子表格副本,并确保表格之间的数据一致。请编辑您的问题以解释您试图实现的结果-请用文字和句子。公式的包含(必要时)无法帮助理解所需的结果。我遇到了此错误:另外,如果我错了,请修复我,但只要键入名称,脚本就会将值重置为
0
?如果是,只需重置一次,然后允许数字继续计数。