我有一个电子表格,如果某个值是基于另一列中的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
电子表格在此供参考, Link
答案 0 :(得分:2)
假设countifs列是H列,而name列是G列,请将其放入I2并向下拖动:
=if(H2>0,iferror(index(I$1:I1,match(G2,G$1:G1,0)),max(I$1:I1)+1),"")
首先检查该名称是否存在重复值,如countifs列中所定义。如果有,它会使用MATCH函数检查该选项卡上方的行上是否显示了该特定名称。如果匹配,则给出该匹配的行号。请注意,引用以对行1的绝对引用和对行1的相对引用开始。这将在向下拖动公式时拖动测试区域的底行。公式将始终在公式单元格上方的单元格结束。
如果MATCH编号提供行号,它会将该值提供给INDEX函数,该函数将在列I上面找到已经分配的编号。如果有错误,则表示没有匹配,所以需要在上面的列中找到的MAX值,并添加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。