我有以下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)
因为它应该是用户友好的并且易于处理,所以我更喜欢没有任何数组公式的解决方案或需要插入的附加列。
答案 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} }, 如果需要)。