Excel为文本分配自动编号

我有一个电子表格,我需要一个公式来创build类似于自动编号的行为,如果某个值是基于另一列中的Countif公式的重复值。 我想为每个具有多个订单#的名称制作一个自动编号。 所以在这个例子中,Joe得到的ID是1,因为他是第一张,而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 

电子数据表是在这里的公式参考, 链接

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

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

首先检查是否存在该名称的重复值,如countifs列中所定义的。 如果存在,则使用MATCHfunction检查该特定名称是否已显示在该选项卡上方的一行上。 如果有匹配,则给出匹配的行号。 请注意,引用以对行1的绝对引用以及对行1的相对引用开始。当您拖动公式时,这将拖动testing区域的底部行。 该公式将始终在公式单元格上方的单元格处结束。

如果MATCH编号提供了行号,则将该值赋予INDEX函数,该函数将列上已find的已分配编号拉入。如果出现错误,则尚未匹配,因此它取最大值在上面的列中find,并添加1.如果THAT提供了错误,请参阅下文。

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

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

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