我需要帮助对包含发明人提交内容的电子表格进行自动编号,但有些提交内容列出了多个人,但需要相同的编号。
例如:
No. Count Name
0011 1 Joe
0012 0.5 Sam
0012 0.5 Alex
0013 1 Ryan
取决于Count
提交内容分配给多少人。代表提交内容,因此 #0012 是 Sam 和 Alex 的,因此需要给他们相同的编号。我希望有一种简单的方法可以为工作表编号,而不是单独对每个工作表进行编号。我需要一个公式,可以根据是否Number
重复自动编号Count
和记录。Name
Count
答案1
您需要使用以下公式手动设置第一个数字。
=TEXT(11,"0000")
在下面的下一个单元格中,输入此公式并填写该列:
=IF(AND(B3=B2,COUNTIF(A$2:A2,A2)<1/B3),TEXT(A2,"0000"),TEXT(A2+1,"0000"))
这种方法的原理是,您唯一不想增加数字的情况是当计数与前一条记录相同并且上面的数字尚未列出适当的次数时。(适当的次数等于1/Count
。)第二个条件是必要的,因为在示例中的第 10 行到第 13 行等情况下,表中大小相同的组彼此相连。
答案2
您如何知道 Sam 和 Alex 与同一份提交相关联,而不是不同项目的共同提交者?您需要一些分组依据。可靠的方法是添加一个提交所特有的列(如提交标题),作为唯一标识符。您可以根据该列对列表进行排序。然后,如果唯一 ID 与上一行不同,则增加编号。
例如,假设 A 列是唯一 ID,B 是您的编号,C 是计数,D 是名称,并且您显示的第一行数据 (0011) 是第 2 行。您可以为 B 中的所有单元格复制一个通用公式(基于 B2),如下所示:
=if(row()=2,1,if(a2=a1,b1,b1+1))
如果您想强制前导零,您可以对格式进行一些调整。
这不是好的做法,但如果您手动确保列表是连续的,并且这是您唯一需要处理的内容,您可以这样做:假设 A 列是您的编号,B 列是计数,C 列是名称。添加新的 D 列(可以隐藏)。再次,第 2 行是第一个数据行。D 中所有单元格的通用公式(基于 D2)将是:
=if(b2=1,1,if(b1=1,b2,if(row()=2,b2,d1+b2)))
如果您有多个连续的多次提交,这将标识每个提交组的结束时间。
您的数字的一般公式(基于 A2)为:
=if(row()=2,1,if(d1=1,a1+1,a1))
再次,您可以格式化以强制前导零。
编辑:认识到仅依靠输入数据的顺序进行编号(我的第二个示例和 Excellll 的解决方案)是有风险的,如果数据顺序有可能发生变化(例如,由于意外对数据进行排序)。编号逻辑会崩溃并给出错误的结果。为每个提交添加一个唯一的 ID 提供了一种万无一失的恢复方法(只需按 ID 排序)。