通过单击将单元格值增加一

zth*_*.nc 5 google-sheets google-apps-script

我想在Google工作表中写一个公式,以便可以附加到按钮上,以使1每次单击该单元格中的值都会增加。 是我在该主题上能找到的最好的。

我试图这样做,但无济于事。我正在使用Windows 7和Chrome。

Shr*_*pur 9

首先创建一个脚本以增加单元格的值。例如,要将单元格“ A1”加1,可以使用以下脚本:

function increment() {
  SpreadsheetApp.getActiveSheet().getRange('A1').setValue(SpreadsheetApp.getActiveSheet().getRange('A1').getValue() + 1);
}
Run Code Online (Sandbox Code Playgroud)

保存此脚本并打开电子表格,然后按照以下步骤操作:

  • 转到“插入”>“绘图”,然后使用形状和文本绘制按钮。
  • 相应地放置按钮,然后右键单击它以在其侧面显示箭头。
  • 在下拉菜单中,选择“分配脚本”。并输入您的函数名称。(在这种情况下为“增量”)
  • 第一次单击它时,它会征求许可,但随后应该可以使用。

下拉式菜单

结果

  • 这是针对特定的单元格的,如果我们要为不同的行创建多个按钮,并且每个按钮修改自己的行,该怎么办?有没有办法不手动创建此方法? (3认同)

soM*_*rio 6

2020 年更新

动机:

我想根据Marlon 的评论提供一种不同的方法:

如果我们想为不同的行创建多个按钮并且每个按钮修改自己的行怎么办?有没有办法不手动创建这个?

解决方案:

您可以使用onSelectionChange捕获点击事件和一个按钮的模仿行为。

  • 以下脚本将A在单击同一行的列B中的单元格时增加列中单元格的值。

  • 它还可以即时创建“按钮”文本,但这是可选的,由用户决定。

要使用此解决方案,只需将其复制并粘贴到脚本编辑器并保存更改即可。之后,它将自动用于单击事件。在这个解决方案中,我用作工作Sheet1表名称。

function onSelectionChange(e) {
  const as = e.source.getActiveSheet();
  const col = e.range.getColumn();
  const row = e.range.getRow();
  if (as.getName() == 'Sheet1' && col == 2){ 
        const range = as.getRange(row,1);
        range.setValue(range.getValue()+1);
        e.range.setValue('Button');
  }
}
Run Code Online (Sandbox Code Playgroud)

示范:

示范

限制:

虽然这种方法效果很好,但有两个缺点:

  1. 点击和更新之间有一个小的延迟。

  2. 选择单元格时会激活触发器。如果一个单元格已经被选中,如果你再次点击它,该功能将不会触发。您必须删除当前选择,然后再次选择它。


小智 5

将以下内容分配给工作表中的绘图,它会将当前选定单元格的值增加 1:

function plusOne() {
 
  var cell = SpreadsheetApp.getActiveSheet().getActiveCell();
  var value = cell.getValue() * 1;
  cell.setValue(value+1);
}
Run Code Online (Sandbox Code Playgroud)