【问题标题】:HOWTO ad a unique id to each unique row?如何为每个唯一行添加唯一 ID?
【发布时间】:2013-09-25 09:41:19
【问题描述】:

我有两列数据:

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

【问题讨论】:

  • 您需要对数据进行排序还是移动它? ID 是否需要永久保留在行中?

标签: excel unique


【解决方案1】:

我有同样的问题,我为此开发了一个三公式方法。如果我嵌套它们,我可能可以将它连接起来,但是无论如何,这行得通。

假设您要“编号”的数据在 A 列,表格的第一行是第 3 行。 第一列(在 B 列中)计算“值”的出现次数,并且随着表格的增长,范围从表格顶部向下扩展: =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)

请注意,如果您确实采用了整个事情,这将动态地重新编号所有数据结果。即所有公式都有效,但“分配”给特定数据集的数字可能会有所不同,因为无论项目列表的顺序如何,它都有效。

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

如果动态重新编号有问题,请使用“行键”,这样您就可以在最后恢复原始顺序。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果你的数据没有排序,那就更复杂了……不过你可以在 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 kbd> 一个人。

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

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

      【讨论】:

      • 可能值得将它们分成隐藏的列。一列计算它出现了多少次,另一列在每次遇到 1 时打勾。
      【解决方案4】:

      在将数据集结构化为面板数据时,我一直在处理这个问题。假设您有多列数据,并且根据某人的姓名,每列都是唯一的,例如:


      安妮
      玫瑰
      安妮
      弗兰克
      汤姆
      玫瑰
      安妮

      但不是让每一列都与 Anne、Rose、Frank 或 Tom 相关,而是希望它看起来像这样:

      1 安妮
      2 玫瑰
      1 安妮
      3 弗兰克
      4 汤姆
      2 玫瑰
      1 安妮

      现在每个名字都有一个唯一的数字标识符,可以用来代替名字。

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

      根据数据集的大小,实际上需要 2 分钟,而且非常容易。每次都能完美运行。

      【讨论】:

        猜你喜欢
        • 2015-09-03
        • 2019-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多