Excel技术问题:如何列出区域内包含两个指定字符的单元格
解决方法:提取同时包含两个指定字符的单元格
原公式失效原因
你用的=AND(ISNUMBER(SEARCH("A";$C$2:$C$14)); ISNUMBER(SEARCH("T";$C$2:$C$14)))无法正常运行,核心问题有两个:
AND是聚合函数,处理数组时会把所有单元格的判断结果合并成一个单一的TRUE/FALSE,无法逐行返回每个单元格的判断结果- 普通公式模式下,直接引用整区域
$C$2:$C$14只会计算区域第一个单元格(C2)的结果,不会自动遍历所有单元格
方案1:逐行标记符合条件的单元格(对应P列效果)
在P2单元格输入以下公式,下拉填充到P14:
=AND(ISNUMBER(SEARCH("A",C2)),ISNUMBER(SEARCH("T",C2)))
公式会逐行检查C列对应单元格是否同时包含"A"和"T",返回TRUE(符合)或FALSE(不符合)。如果需要自定义显示文本,用IF函数扩展:
=IF(AND(ISNUMBER(SEARCH("A",C2)),ISNUMBER(SEARCH("T",C2))),"符合","不符合")
方案2:提取所有符合条件的单元格内容(对应Q列效果)
适用于Excel 365/2021(支持动态数组)
在Q2单元格输入公式,会自动溢出所有符合条件的结果:
=FILTER($C$2:$C$14,ISNUMBER(SEARCH("A",$C$2:$C$14))*ISNUMBER(SEARCH("T",$C$2:$C$14)))
这里用*代替AND,因为数组运算中TRUE*TRUE=1、TRUE*FALSE=0,FILTER会筛选出结果为1的行。
适用于旧版Excel(不支持动态数组)
在Q2单元格输入以下数组公式,按Ctrl+Shift+Enter确认,然后下拉填充直到出现空白:
=INDEX($C$2:$C$14,SMALL(IF(ISNUMBER(SEARCH("A",$C$2:$C$14))*ISNUMBER(SEARCH("T",$C$2:$C$14)),ROW($C$2:$C$14)-ROW($C$2)+1),ROW(A1)))
原理:用IF筛选出符合条件的行号,SMALL依次提取第1、2、3...个符合条件的行号,最后用INDEX返回对应单元格内容。
内容的提问来源于stack exchange,提问作者neke
相关产品推荐
相关产品推荐

