【问题标题】:Create list without duplicates automatically自动创建没有重复的列表
【发布时间】:2017-05-11 08:54:10
【问题描述】:

我有以下 Excel 电子表格

           A            B
1         ID           Unique ID
2         27152        27152             
3         27152        29297
4         27152        28802
5         29297
6         29297
7         28802
8         28802
9         28802
10        28802

A 列中,您可以找到不同的产品 ID。 它们可以在A列中出现多次次。

B 列中,我想制作一个没有重复项的列表,所以 它显示 A 列中列表中的唯一 ID。

我知道我可以通过使用“高级过滤器”或选项卡数据工具下的“删除重复项”功能来实现这一点。

但是,我希望在 Column B 中创建列表而不使用这些选项,因为 Column A 中的数据库将定期更新;因此,最好通过B列中的公式自动删除多个值。

我试图用 AGGREGATE 函数解决它,但无法使其工作。

B2 =AGGREGATE(14,6,A$2:A$10,1)
B3 =AGGREGATE(14,6,A$2:A$10,2)
B4 =AGGREGATE(14,6,A$2:A$10,3)

由于它应该是用户友好且易于处理的,我更喜欢没有任何数组公式或需要插入额外列的解决方案。

【问题讨论】:

标签: excel


【解决方案1】:

你可以使用COUNTIF(range; value)检查你的值出现了多少次,然后如果COUNTIF返回1,你就可以复制你的值

【讨论】:

  • 嗨 NikNik,好主意,但为此我需要一个额外的列来检查每个值。我的想法是有一个公式可以一步完成,而不需要数组或额外的列。
  • 怎么样:=IF(COUNTIF(A$2:A$10; A$2)=1; A$2; "")。 “没有数组”是什么意思?
【解决方案2】:

如果 ID 的顺序无关紧要,可以这样做

在第一行输入公式

C2 =MIN(B2:B10)

B2:B10 是您的 ID 范围

在下一行使用这个公式

=1/AGGREGATE(14,6,1/(($B$2:$B$10>C2)*$B$2:$B$10),1) 

C2 是此处的上一个单元格(上方 1 行)

向下拖动此公式,直到您开始收到 #NUM 错误。如果您想摆脱#NUM 错误,请将公式包装在IFERROR()

我看到您不想使用数组或辅助列的评论。但是 Excel 并不神奇......或者可能是。 :)

【讨论】:

    【解决方案3】:

    您可以使用宏:

    Option Explicit
    
    Sub FilterUnique()
    Dim lastrow As Long
    
    lastrow = Cells(Rows.Count, "A").End(xlUp).Row
    
        ActiveSheet.Range("A2:A" & lastrow).AdvancedFilter _
        Action:=xlFilterCopy, _
        CopyToRange:=ActiveSheet.Range("B2"), _
        Unique:=True
    
    End Sub
    

    正如其他人所说 - 如果不添加列或使用过滤器、宏或数组,就不可能做到这一点

    【讨论】:

      【解决方案4】:

      可以说,数据透视表会“自动”生成这样一个列表,尽管如果将条目添加到 ColumnA 则需要刷新 PT(可能还需要一次性更改标签、排序和条件格式以“隐藏”(blank),如果需要)。

      【讨论】:

        猜你喜欢
        • 2015-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-18
        • 2020-12-19
        相关资源
        最近更新 更多