【发布时间】:2018-03-25 12:21:27
【问题描述】:
在 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))),""))
它采取的步骤是:
- 验证对应行的B列不为空;
- 使用
COUNTIF函数,验证公司在前面的任何行中都不存在; - 如果公司确实存在,则通过
INDEX函数赋予对应的参考号; - 如果公司不存在,它会使用
CONCATENATE和ROW函数为公司分配一个新的参考号。
该公式在很大程度上是有效的,尽管存在一些问题。
添加到此数据库的用户有通过在数据库中间插入行来添加条目的习惯。这使得,由于公式的构建方式,公司唯一的参考代码每次发生时都会发生变化。我相信这部分是因为我使用了ROW 函数。
此外,鉴于在数据库中间插入了新行,公式应该能够验证公司是否已经存在,不仅通过循环遍历所有先前的行,而且遍历所有行(如果插入了新行,当公司可能在新行之后的行时,公式将仅验证以前的行)。
如何在不参考ROW 的情况下在公式中赋予序号?另外,如何确保电子表格验证 B 列的所有行,而不仅仅是插入行之前的行?
【问题讨论】:
标签: google-sheets formula increment