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。
我有一个传播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。