excel 365或者2021版本里,先拿filter筛出你要保留的行,外层套个unique就能直接去重,公式这么写就行:=unique(filter(a2:a100,a2:a100""))。要是还得按自定义条件提取,把filter里的判断条件换成对应列的规则就好。这个方法特别适合会不断新增内容的名单、产品表、部门列表、客户库,结果会自动往下溢出填充到空单元格里。
先确认原始列里确实有重复值
先打开你的Excel数据表,扫一眼要去重的字段。示例里A列的Team字段,Lakers、Warriors、Mavericks这些队名反复出现,B列Points是附带的对应数据;咱们这次要提取不重复的队名,公式范围就选A2:A13,别把顶部的标题行也框进去。

先用 UNIQUE 做一次基础去重
操作时找个空白单元格放公式,比如选择D2,输完=UNIQUE(A2:A13)按回车就行。Excel会自动把所有不重复的队名往下溢出填充,蓝色边框就是动态数组的结果范围;之后原始数据里新增同名项目,结果区也不会多出重复的队名。

把 FILTER 放进 UNIQUE 里按条件提取
操作到需要带条件筛选的场景,把公式改成=UNIQUE(FILTER(A2:A10,B2:B10="Active"))这类写法就行。这里FILTER会先筛出B列状态为Active的所有行,UNIQUE再从筛出来的结果里去掉重复的姓名,最后C2往下出来的Alice、Carol、Bob、Eve,就是筛选完成的不重复名单。

把条件、空值和排序一起处理
要是你的名单里混着空白单元格,直接用FILTER先把空值排除,公式写=UNIQUE(FILTER(A2:A100,A2:A100""))。如果只想提取某个区域或者某个部门的不重复值,条件可以改成=UNIQUE(FILTER(B2:B100,C2:C100="华东"));想要结果直接按字母或者拼音排序,最外层再套一层SORT,整句就是=SORT(UNIQUE(FILTER(B2:B100,C2:C100="华东")))。
检查溢出区域和空结果提示
公式写完之后,重点查两个地方:结果溢出区域的下方有没有旧内容占位,还有FILTER有没有可能筛不出任何数据。如果溢出区域被占了,Excel会返回#SPILL!错误,把溢出范围内的旧内容清掉再按回车就好。要是预判到有可能出现没有匹配值的情况,给FILTER加第三个参数就行,比如=UNIQUE(FILTER(B2:B100,C2:C100="华东","暂无数据")),就算没有符合条件的结果也不会直接弹报错。
多列去重时别只看第一列
要是你把公式范围写成=UNIQUE(FILTER(A2:C100,C2:C100="华东")),Excel默认是判断整行内容是否重复,不会只按第一列的客户名去重。同一个客户只要对应行的日期、金额或者备注不一样,整行都会被保留下来。如果你只想按某一个字段取唯一值,把FILTER的返回范围收窄到对应的那一列就行;要是需要保留多列明细,就先按整行规则去重,之后再用XLOOKUP或者TAKE这类函数补全其他字段。











