【问题标题】:Excel assign auto number for textExcel为文本分配自动编号
【发布时间】:2015-07-23 20:37:05
【问题描述】:

我有一个电子表格,如果某个值是基于另一列中的 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

【问题讨论】:

  • 如果同一个用户同时拥有多个和重复的订单号会怎样?

标签: excel excel-2007 vba


【解决方案1】:

假设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。

【讨论】:

  • 太棒了!很好地分解了这个函数是如何工作的,理解了这个过程后,我实际上会将 COUNTIFS 添加到公式中,然后我可以保存该列空间。
  • @WJD ehhhhh,我不建议这样做;如果您不想在打印版本中看到该列,我建议您隐藏该列,但是在一个公式中添加太多可能会使以后难以阅读/查看。通常在执行这样的任务时(我不能使用 VBA,这在我工作过的任何地方都被禁止使用),我会根据需要创建尽可能多的帮助列,每列中尽可能少,并记录每一列的目的,最上面一行有一个评论说明。然后我去 Data Ribbon -> Group columns。使其更易于查看,但也易于查看。
  • 我明白你的意思。我自己做这个,实际文档是它的一部分,实际上是 25 列,现在是 26 列。通过 VBA,我正在设置我的打印视图,所以我也会调整以隐藏它。再次感谢。
猜你喜欢
  • 2017-10-31
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2018-10-31
  • 1970-01-01
相关资源
最近更新 更多