假设 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。如果这提供了错误,请参见下文。
根据 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。