如何用动态数组对Excel动态数组进行非精确匹配筛选?
Excel动态数组非精确匹配筛选方案
可以通过组合FILTER、SEARCH、MMULT等函数实现包含式匹配的动态筛选,以下是具体公式和说明:
基础公式(直接使用)
=FILTER(F1#, MMULT(--ISNUMBER(SEARCH(C1#, TRANSPOSE(F1#))), ROW(C1#)^0)>0, "无匹配结果")
拆分解释
SEARCH(C1#, TRANSPOSE(F1#)):将待搜索数组F1#转置后,用条件数组C1#的每个元素逐一搜索,返回匹配位置(成功)或错误值(失败)。--ISNUMBER(...):将匹配结果转换为二进制矩阵——匹配成功转1,失败转0,形成「条件×待匹配元素」的二维数组。MMULT(..., ROW(C1#)^0):通过矩阵乘法对每一列(对应一个待匹配元素)求和,结果>0则表示该元素至少匹配一个条件。FILTER(...):根据求和结果筛选出符合条件的元素,无匹配时返回指定提示文本。
优化版(含空值过滤)
如果条件数组C1#可能存在空白单元格,先过滤空值避免无效匹配:
=LET( 有效条件, FILTER(C1#, C1#<>""), 待匹配数组, F1#, 匹配状态, --ISNUMBER(SEARCH(有效条件, TRANSPOSE(待匹配数组))), 匹配判定, MMULT(匹配状态, ROW(有效条件)^0)>0, FILTER(待匹配数组, 匹配判定, "无匹配结果") )
注意事项
- 若需要区分大小写的匹配,将
SEARCH替换为FIND函数即可。 - 公式会自动适应
C1#和F1#的动态变化,无需手动调整范围。
内容的提问来源于stack exchange,提问作者Unrequest
相关产品推荐
相关产品推荐

