Excel中如何获取排除零值与重复值后的第二小唯一值
获取Excel中排除零值与重复值后的第二小唯一值
嘿,这个需求我帮你拆解几个实用的解法,适配不同版本的Excel,放心用~
方法一:Excel 365/2021 动态数组解法(推荐)
这个版本支持最新的动态数组函数,写法简洁直观,一步到位:
=INDEX(SORT(UNIQUE(FILTER(A:A,A:A<>0))),2)
或者用更直白的CHOOSEROWS替代INDEX,可读性更强:
=CHOOSEROWS(SORT(UNIQUE(FILTER(A:A,A:A<>0))),2)
公式拆解:
FILTER(A:A,A:A<>0):先把A列里所有非零值筛选出来,直接剔除掉所有0;UNIQUE(...):对筛选后的结果去重,得到一个仅包含唯一非零值的列表;SORT(...):把这个唯一列表按升序排列(默认就是从小到大排序);INDEX(...,2)/CHOOSEROWS(...,2):直接取排序后的第2个元素,也就是你要的第二小唯一值。
举个例子:如果A列数据是0,1,1,2,3,经过上述步骤后,最终会得到2,完全符合你的目标结果。
方法二:旧版Excel(2019及以前)数组公式解法
旧版本没有动态数组函数,得用数组公式实现,输入的时候要按住Ctrl+Shift+Enter触发数组计算:
=SMALL(IF(COUNTIF(A$1:A$10,A$1:A$10)=1,IF(A$1:A$10<>0,A$1:A$10,""),""),2)
(注意把A$1:A$10替换成你实际的数据区域)
公式拆解:
IF(A$1:A$10<>0,A$1:A$10,""):先筛选出区域内的非零值;IF(COUNTIF(A$1:A$10,A$1:A$10)=1, [上一步结果], ""):在非零值里挑出唯一值(即出现次数为1的值);SMALL([上一步结果],2):从这些唯一非零值里取第二小的数。
额外提示:处理无符合条件的情况
如果你的数据里唯一非零值少于2个(比如只有1个或者全是0),公式会返回#NUM!错误,可以用IFERROR包装一下,给出友好提示:
=IFERROR(INDEX(SORT(UNIQUE(FILTER(A:A,A:A<>0))),2),"无符合条件的值")
内容的提问来源于stack exchange,提问作者wan
相关产品推荐
相关产品推荐

