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

时间:2015-09-27 23:22:27

标签: google-apps-script google-sheets

我想在Google表格中编写一个公式,以便我可以附加到按钮,以便每次单击时单元格中的值增加1Here是我在这个主题上能找到的最好的。

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

3 个答案:

答案 0 :(得分:5)

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

Reference:

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

  • 转到“插入”> “绘图”并使用形状和文字绘制按钮。
  • 相应地定位您的按钮,然后右键单击它以显示 它旁边的箭头。
  • 在下拉菜单中,选择“分配脚本”。并输入名称 你的功能。 (在这种情况下“增量”)
  • 第一次点击它时,它会要求许可,但是 应该随后工作。

Dropdown Menu

Result

答案 1 :(得分:0)

将以下内容分配给图纸内部的图形,它将使当前所选单元格的值增加1:

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

答案 2 :(得分:0)

更新2020

动机:

我想根据Marlon's评论提供另一种方法:

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

解决方案:

您可以使用onSelectionChange捕获单次点击事件并模仿按钮的行为。

  • 以下脚本将在单击 same 行的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');
  }
}

演示:

demonstration

限制:

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

  1. 点击和更新之间的延迟很小。

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