自动创建没有重复项的列表

时间:2017-05-11 08:54:10

标签: excel

我有以下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。

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

但是,我更愿意在没有这些选项的 B列中创建列表,因为 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)

因为它应该是用户友好的并且易于处理,所以我更喜欢没有任何数组公式的解决方案或需要插入的附加列。

4 个答案:

答案 0 :(得分:0)

您可以使用COUNTIF(range; value)来查看您的值显示的次数,之后如果COUNTIF返回1,您可以复制您的值

答案 1 :(得分:0)

如果ID的顺序无关紧要,可以执行以下操作

在第一行放了公式

C2 =MIN(B2:B10)

其中B2:B10是您的ID范围

在下一行中使用此公式

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

其中C2是前一个单元格(上面一行)

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

我看到你的评论,你不想使用数组或帮助列。但是Excel不是魔术.....或者可能是它。 :)

答案 2 :(得分:0)

您可以使用宏:

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

正如其他人所说的 - 如果不添加列或使用过滤器,宏或数组

,就不可能这样做

答案 3 :(得分:0)

可以说数据透视表会“自动”生成这样的列表,但是如果条目被添加到ColumnA,则需要刷新PT(加上标签的一次性更改,排序和条件格式化为'隐藏'{{1} }, 如果需要)。