如何在使用表单

时间:2015-07-27 20:32:49

标签: forms numbers google-sheets sequence auto-generate

Ahab在2010年表示:基于时间戳的复杂外观数字有一个重要属性,删除或插入行时数字不能改变。 只要通过插入删除行不更改提交的数据,简单公式=ArrayFormula(ROW(A2:A) - 1)可能是最容易使用的。

对于其他情况,没有可靠的解决方案。 :(

现在我们住在2015年。也许时代已经改变了?

我需要一种可靠的方法来使用表单对条目进行编号。

也许一个脚本可以做到这一点?一个可以为每个条目添加1的脚本? 即使删除或插入行,某些条目也必须保留该数字。

我创建了这个简单的电子表格,我在其中手动添加了1,2和3,请看一下: https://docs.google.com/spreadsheets/d/1H9EXns8-7m9oLbCrTyIZhLKXk6TGxzWlO9pOvQSODYs/edit?usp=sharing

脚本必须找到以前条目的最大值,即3,然后自动添加1。

谁可以帮我这个?

Grtz,Bij

2 个答案:

答案 0 :(得分:1)

  

也许一个脚本可以做到这一点?一个可以为每个添加1的脚本   条目?

是的,那就是你需要诉诸的。我冒昧地在你的例子ss中输入这个:

function onEdit(e) {
  var watchColumns = [1, 2]; //when text is entered in any of these columns, auto-numbering will be triggered
  var autoColumn = 3;
  var headerRows = 1;
  var watchSheet = "Form";

  var range = e.range;
  var sheet = range.getSheet();
  if (e.value !== undefined && sheet.getName() == watchSheet) {
    if (watchColumns.indexOf(range.getColumn()) > -1) {
      var row = range.getRow();
      if (row > headerRows) {
        var autoCell = sheet.getRange(row, autoColumn);
        if (!autoCell.getValue()) {
          var data = sheet.getDataRange().getValues();
          var temp = 1;
          for (var i = headerRows, length = data.length; i < length; i++)
            if (data[i][autoColumn - 1] > temp)
              temp = data[i][autoColumn - 1];
          autoCell.setValue(temp + 1);
        }
      }
    }
  }
}

答案 1 :(得分:0)

对我来说,最好的方法是在第二张表中创建一个查询,从表单响应到第二列等等。然后使用第一列进行编号。

在第二张 B1 中,您将使用:

=QUERY(Form!1:1004)

在第二张 A2 中,您可以使用:

=ARRAYFORMULA(if(B2:B="",,Row(B2:B)-1))

我在你的示例电子表格中制​​作了第二张表,看看它。