【回复贴】 新手的万字公式缩减
懒得批爆
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))))
优化说明:
MATCH(A2:A29, C2:C17, 0):这部分会尝试在范围C2:C17中查找A2:A29中的每个值。如果找到匹配项,它会返回该匹配项在C2:C17中的相对位置;如果没有找到,它会返回错误。
ISNUMBER(...):这部分会检查MATCH函数是否返回了一个数字(即是否找到了匹配项)。
NOT(...):这部分会反转ISNUMBER的结果。如果ISNUMBER返回TRUE(即找到了匹配项),NOT会返回FALSE;如果ISNUMBER返回FALSE(即没有找到匹配项),NOT会返回TRUE。
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个字符
2024年03月优秀创作者
2024年03月优秀创作者