Google表格公式中的数字增量

时间:2017-10-13 11:15:18

标签: google-sheets formula increment

在Google表格数据库中,我有一个我为了向一系列公司分配参考编号而构建的公式。

每家公司都应以RET00XX的形式拥有其唯一编号,其中XX代表唯一的公司编号。我希望这些数字是连续的,从1开始,然后继续+1。 每当在数据库中插入新公司时,公式应该能够将其归入参考编号。它还应该能够验证公司是否已经存在于数据库中,如果存在,则自动将其归因于公司的唯一参考编号,而不是创建新的参考编号。

公司名称位于B栏的单元格中。

这是我建立的公式(第2行中的公式):

=ARRAYFORMULA(IF($B2<>"",IF((COUNTIF($B$1:$B1,$B2)>0),INDEX($A$1:$R2,MATCH($B2,$B$1:$B1,0),12),CONCATENATE("RET00",ROW($B2))),""))

所采取的步骤是:

  1. 验证对应行中的B列不为空;
  2. 使用COUNTIF功能,验证公司在以前的任何行中都不存在;
  3. 如果公司确实存在,则通过INDEX功能
  4. 将相应的参考编号归属
  5. 如果公司不存在,它会为公司提供一个包含CONCATENATEROW功能的新参考号。
  6. 虽然存在一些问题,但公式很有效。 添加到此数据库的用户习惯通过在数据库中间插入行来添加条目。这样,由于公式的构建方式,公司唯一的参考代码每次发生时都会发生变化。我相信这部分归因于我使用ROW函数。
    另外,假设在数据库的中间插入了新行,公式应该能够验证公司是否已经存在,不仅是通过遍历所有先前的行而是遍历所有行(如果新行是插入时,公式将只验证以前的行,当公司可以在新的行之后的行中。)

    如何在不引用ROW的情况下将公式中的序号归属?另外,如何确保电子表格验证B列的所有行而不仅仅是插入行之前的行?

5 个答案:

答案 0 :(得分:4)


在您的工作表中应用此公式,

=ArrayFormula(if(B2:B<>"",row(A2:A)-1,""))

有关此的更多信息,请访问以下
链接:https://infoinspired.com/google-docs/spreadsheet/auto-serial-numbering-in-google-sheets/

答案 1 :(得分:3)

简短回答

使用Google Apps Script

解释

使用电子表格函数在用作数据库的实时电子表格上设置ID非常危险,因为在对电子表格内容进行更改时将重新计算值。

使用脚本添加“固定值”,而不是使用公式。通过使用自定义菜单或侧面板,脚本编辑器或时间驱动的触发器,可以在单元格编辑和行插入等事件上自动调用脚本。

Web Applications中的以下问答显示了几种设置序号的方法:

来自SO的其他内容也可能有所帮助:

答案 2 :(得分:3)

独立于起始行号的解决方案

这些示例将允许您在公式中生成递增值。

增加整数,基于零: 值将为:0,1,2,3等。
注意:地址“$ A $ 2”表示顶行的单元格。它应该更改为您的实际顶行所在的单元格。关于这种方法的好处是,如果在公式的起始位置上方插入新行,它就不会中断。

=(ROW()-ROW($A$2))

整数,一个基于: 值将为:1,2,3,4等

=(ROW()-ROW($A$2) + 1)

日期: 值为:2000-01-01,2000-01-02,2000-01-03等

=Date(2000,1,1) + (ROW()-ROW($A$2))

所有偶数: 值将为:0,2,4等

=(ROW()-ROW($A$2) * 2

答案 3 :(得分:1)

在第一个单元格中插入1,然后在下面的单元格中粘贴以下公式。

=INDIRECT(ADDRESS(ROW()-1,COLUMN())) + 1

答案 4 :(得分:0)

在第一行添加数字并输入下一个单元格的公式

我使用 =A1+1 来获取增量编号来索引每一行的任务。