如何为每个唯一行添加唯一ID?

时间:2013-09-25 09:41:20

标签: excel unique

我有两列数据:

a  1
a  1
a  2
b  3
b  4

在列表中有4个唯一的行。我想为每个独特的行添加一个唯一的ID。 像这样:

1  a  1
1  a  1
2  a  2
3  b  3
4  b  4

当然我有更多的行和列,日期比这个例子更复杂。

无论如何要做到这一点我擅长? Mvh Kresten Buch

4 个答案:

答案 0 :(得分:2)

我有同样的问题,我已经为此制定了三种方法。如果我嵌套它们,我可能会连接它,但是whatevs,这可行。

假设您想要'数字'的数据在A列中,而表的第一行是第3行。 第一列(在B列中)计算'value'的出现次数,随着表的增长,范围从表的顶部向下扩展: = COUNTIF($ A $ 3:A3,A3)

第二列的公式也会随着行数的增加而扩展,并且每次在B列遇到1(即第一次出现新的唯一值)时,只需将事务计数加1 = IF(B3 = 1,MAX($ C $ 2:C2)+1 “”) 即使在表格的第一行中,这个也适合我 - 我希望必须手动输入1来启动列表。让它在没有手动输入的情况下工作是一件好事,这意味着即使您将表格数据用于不同的顺序,表格也能正常工作。

D列中的第三个使用vlookup查找值。请注意,当vlookup找到多个数字时,它始终会拉出第一个数字。 = VLOOKUP(A3,$ A $ 3:C3,3,FALSE)

请注意,如果您采取整个操作,这将动态重新编号所有数据结果。即公式全部起作用,但是“分配”到特定数据集的数量可能不同,因为它都可以根据项目列表的任何顺序工作。

我对这些公式的使用假设我每个月都会将一组新数据粘贴到表格的底部,其中一些项目是前几个月的重复 - 即已经在表格中,其中一些是新的

如果动态重新编号是个问题,请使用“行键”,这样您就可以在最后使用原始订单。

答案 1 :(得分:1)

假设您的数据位于B2:C6,请在A2中尝试=IF(AND(B1=B2,C1=C2),A1,A1+1),向下复制

答案 2 :(得分:1)

如果你的数据没有排序,那就更复杂......但你可以在A2中使用这样的东西:

=IF(COUNTIFS($B$1:B2,B2,$C$1:C2,C2)>1,INDEX($A$1:A1,IFERROR(MATCH(B2&"-"&C2,$B$1:B1&"-"&$C$1:C1,0),1)),MAX($A$1:A1)+1)

我假设没有标题,你已经将1放在单元格A1中作为第一条记录。

它基本上检查公式上方的整列,如果已有类似的记录,它将分配先前给定的唯一ID,如果没有,它将给出一个新的ID。

这是一个数组函数,因此如果您使用 Ctrl + Shift + Enter 而不是 Enter 一个人。

IFERROR()是因为MATCH(B2&"-"&C2,$B$1:B1&"-"&$C$1:C1,0)会在第2行(第一个要检查的记录)上返回错误。

将其放入第一个单元格后,您可以填写公式。

答案 3 :(得分:0)

我在将数据集构建到面板数据时始终处理此问题。假设你有多列数据,每一列都是独一无二的,基于某人的名字,如:

ANNE
ROSE
ANNE
FRANK
TOM
ROSE
ANNE

但不是让每一栏都与安妮,罗斯,弗兰克或汤姆相关,而是希望它看起来像这样:

1 ANNE
2 ROSE
1 ANNE
3弗兰克斯 4 TOM
2 ROSE
1 ANNE

因此,每个名称现在都有一个唯一的数字标识符,可用于代替名称。

创建数据的数据透视表,只将具有名称(或标识符可能是的)的列放入“行”部分。这将挑出数据集中使用的所有不同名称。将此数据透视表复制并粘贴到工作表上的任何位置,以便名称位于实际单元格中,而不是数据透视表。在名称的右侧,在第一个名称旁边输入1,然后在= B1 + 1中输入,依此类推,以便使用唯一值为每个名称编号;然后将此列复制并粘贴为数字,以便删除它们的公式。最后,只需转到原始数据集并执行VLOOKUP,以便使用数据透视表分配的任何唯一值附加名称。确保在完成后复制并粘贴为数字以删除VLOOKUP公式。

根据数据集的大小,需要2分钟才能完成,非常简单。它每次都会完美运作。