【回复贴】 新手的万字公式缩减

懒得批爆
懒得批爆

2024年03月优秀创作者

提问贴传送门:https://bbs.wps.cn/topic/19413

原公式使用FILTER函数来过滤出范围A2:B29中,其列A的值不等于C2到C17中任一单元格的值的数据。

这是优化后的公式

=FILTER(A2:B29, NOT(ISNUMBER(MATCH(A2:A29, C2:C17, 0))))

优化说明:

  1. MATCH(A2:A29, C2:C17, 0):这部分会尝试在范围C2:C17中查找A2:A29中的每个值。如果找到匹配项,它会返回该匹配项在C2:C17中的相对位置;如果没有找到,它会返回错误。

  1. ISNUMBER(...):这部分会检查MATCH函数是否返回了一个数字(即是否找到了匹配项)。

  1. NOT(...):这部分会反转ISNUMBER的结果。如果ISNUMBER返回TRUE(即找到了匹配项),NOT会返回FALSE;如果ISNUMBER返回FALSE(即没有找到匹配项),NOT会返回TRUE

  1. FILTER(A2:B29, ...):最后,FILTER函数会根据上述条件过滤出范围A2:B29中的数据。只有当列A中的值在C2:C17中没有匹配项时,相应的行才会被包含在结果中。

优化前的公式:

=FILTER(A2:B29,(A2:A29<>C2)*(A2:A29<>C3)*(A2:A29<>C4)*(A2:A29<>C5)*(A2:A29<>C6)*(A2:A29<>C7)*(A2:A29<>C8)*(A2:A29<>C9)*(A2:A29<>C10)*(A2:A29<>C11)*(A2:A29<>C12)*(A2:A29<>C13)*(A2:A29<>C14)*(A2:A29<>C15)*(A2:A29<>C16)*(A2:A29<>C17))

231个字符

优化后的公式:

=FILTER(A2:B29, NOT(ISNUMBER(MATCH(A2:A29, C2:C17, 0))))

56个字符

四川省
浏览 185
1
7
分享
7 +1
14
1 +1
全部评论 14
 
user_493681
· 四川省
回复
 
s w
是个办法,不过用countif()更简练易懂
· 河南省
回复
懒得批爆
懒得批爆

2024年03月优秀创作者

请...
· 四川省
回复
 
HC.旋
打卡
· 江苏省
回复
 
鹤
打卡
· 河南省
回复
 
阿拉星星
高手
· 山东省
回复
 
阿拉星星
厉害
· 山东省
回复
 
wps新路
还得是你 厉害
· 重庆
回复
懒得批爆
懒得批爆

2024年03月优秀创作者

喜欢研究新函数,但是用过后完全不记得什么原理了 就是传说中的一时兴起
· 四川省
回复