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的所有行而不仅仅是插入行之前的行?