Excel 为文本分配自动编号

Excel assign auto number for text

我有一个传播sheet,我需要一个公式来创建类似于自动编号的内容,如果一个值是重复的,则基于另一列中的 Countif 公式。我想为每个具有多个 order# 的​​名称创建一个 auto #。所以在这个例子中,Joe 得到的 ID 为 1,因为他首先是 sheet,Bunny 得到 2,当 Joe 的名字重复时它仍然是 1。这个名字可能有几十个人,每个文件都会不同。感谢您的帮助。

ORDER#  LN  QTY ITEM        LOC         NAME          Countifs  Auto Number
OD10560 1   24  part#12     Location 1  Joe John       1            1
OD10559 1   1   part#114    Location 2  Bunny Johnson  2            2
OD10569 1   3   part#444    Location 1  Joe John       1            1
OD10567 1   3   part#777    Location 2  Archy Bunker   0    
OD10567 2   4   part#123    Location 2  Archy Bunker   0    
OD10562 1   24  part#458    Location 1  Kay Harrison   0    
OD10577 1   2   part#471    Location 2  Bunny Johnson  1            2
OD10577 2   1   part#736    Location 2  Bunny Johnson  1            2
OD10563 1   2   part#778    Location 1  Mark Riddle    0    
OD10579 1   2   part#3347   Location 1  Terry Clark    0    

Spreadsheet这里是公式参考, Link

假设countifs列为H列,name列为G列,将其放入I2并向下拖动:

=if(H2>0,iferror(index(I:I1,match(G2,G:G1,0)),max(I:I1)+1),"")

这首先检查该名称是否有重复值,如 countifs 列中所定义的那样。如果有,它会使用 MATCH 函数检查该特定名称是否已显示在此选项卡上方的一行中。如果有匹配项,它会给出该匹配项的行号。请注意,引用以对第 1 行的绝对引用和对第 1 行的相对引用开头。这将在您向下拖动公式时拖动测试区域的底行。公式将始终在公式单元格上方的单元格处结束。

如果 MATCH 编号提供了行号,它会将该值提供给 INDEX 函数,该函数会拉入上面在第 I 列中找到的已经分配的编号。如果有错误,则还没有匹配项,所以它采用在上面的列中找到的最大值,并加 1。如果这提供了错误,请参见下文。

根据 I1 的值,您可能需要将第一个匹配项的值硬编码为“1”,或者将公式更改为以下内容:

=if(H2>0,iferror(index(I:I1,match(G2,G:G1,0)),iferror(max(I:I1)+1,1)),"")

这里唯一的区别是,如果MAX函数returns出错,那么上面还没有数字值,因此被认为是第一个命中,默认为1。