Excel中使用FILTER函数对比数组时的失效问题
Excel中使用FILTER函数对比数组时的失效问题
嗨,我来帮你搞定这个FILTER函数的小问题~
你现在遇到的情况很典型:当用单个单元格(比如M21)和目标列做对比时,FILTER函数能正常返回匹配的行,但换成单元格区域(比如M23:M25)就直接失效了,对吧?
问题原因
单个单元格和列对比时,Excel会自动把这个单元格的值“广播”成和目标列长度一致的数组,逐行做相等判断,生成符合FILTER要求的布尔数组;但如果你直接写M23:M25 = ALARM_W_A[aansluit_nr],Excel会尝试把区域和列逐行一一对应对比(比如M23对应列的第一行,M24对应第二行……),这显然不是你想要的“列中值是否存在于M23:M25区域”的逻辑,自然就得不到正确结果。
解决方案
要实现“筛选出aansluit_nr列的值存在于M23:M25区域中的行”,你需要用MATCH函数配合ISNUMBER来生成正确的条件数组:
=FILTER(ALARM_W_A, ISNUMBER(MATCH(ALARM_W_A[aansluit_nr], M23:M25, 0)), "No Result")
简单解释
MATCH(ALARM_W_A[aansluit_nr], M23:M25, 0):会检查aansluit_nr列的每个值是否在M23:M25区域里,找到就返回位置,找不到返回错误值ISNUMBER(...):把MATCH的结果转换成布尔值(找到就是TRUE,没找到就是FALSE),正好作为FILTER的筛选条件
这样修改后,就能实现你想要的“多值匹配筛选”效果啦~
备注:内容来源于stack exchange,提问作者PaN1NI
相关产品推荐
相关产品推荐

