在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))),""))
所采取的步骤是:
COUNTIF
功能,验证公司在以前的任何行中都不存在; INDEX
功能CONCATENATE
和ROW
功能的新参考号。虽然存在一些问题,但公式很有效。
添加到此数据库的用户习惯通过在数据库中间插入行来添加条目。这样,由于公式的构建方式,公司唯一的参考代码每次发生时都会发生变化。我相信这部分归因于我使用ROW
函数。
另外,假设在数据库的中间插入了新行,公式应该能够验证公司是否已经存在,不仅是通过遍历所有先前的行而是遍历所有行(如果新行是插入时,公式将只验证以前的行,当公司可以在新的行之后的行中。)
如何在不引用ROW
的情况下将公式中的序号归属?另外,如何确保电子表格验证B列的所有行而不仅仅是插入行之前的行?
答案 0 :(得分:4)
在您的工作表中应用此公式,
=ArrayFormula(if(B2:B<>"",row(A2:A)-1,""))
有关此的更多信息,请访问以下
链接:https://infoinspired.com/google-docs/spreadsheet/auto-serial-numbering-in-google-sheets/
答案 1 :(得分:3)
使用电子表格函数在用作数据库的实时电子表格上设置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 来获取增量编号来索引每一行的任务。