如何在Excel中判断H列文本是否包含K列短语并在I列返回Yes?
解决方案:判断Excel单元格是否包含指定范围的任意短语并标记
1. 公式实现(推荐)
方法1:兼容旧版Excel的COUNTIF+SUMPRODUCT组合
在I2单元格输入以下公式,下拉填充到需要的行:=IF(SUMPRODUCT(COUNTIF(H2,"*"&$K$2:$K$13&"*"))>0,"Yes","")
原理:COUNTIF(H2,"*"&$K$2:$K$13&"*")会逐个检查H2是否包含K列的短语,返回一组1或0的结果;SUMPRODUCT求和后只要大于0,就说明有匹配,返回"Yes"。
方法2:适合Excel 2019及以后的TEXTJOIN组合
=IF(ISNUMBER(SEARCH(TEXTJOIN("|",TRUE,$K$2:$K$13),H2)),"Yes","")
原理:TEXTJOIN把K列的所有短语用|拼接成一个匹配串,SEARCH查找H2中是否存在任意一个短语,ISNUMBER判断查找结果是否有效,有效则返回"Yes"。
方法3:Excel 365/2021专属动态数组公式
=BYROW(H2:H100,LAMBDA(x,IF(MAX(ISNUMBER(SEARCH(K2:K13,x))*1)>0,"Yes","")))
原理:BYROW自动遍历H2到H100的每一行,LAMBDA对每个单元格检查K列短语,MAX判断是否有匹配项,自动填充所有结果,不用下拉。
2. 批量条件格式设置(不用手动逐个加规则)
如果需要批量给H列符合条件的单元格标绿:
- 选中H列需要设置的范围(比如H2:H100)
- 点击「条件格式」→「新建规则」→「使用公式确定要设置格式的单元格」
- 输入公式:
=SUMPRODUCT(COUNTIF(H2,"*"&$K$2:$K$13&"*"))>0 - 设置填充色为绿色,确定后所有包含指定短语的单元格会自动标绿。
3. VBA一键自动化(适合定期重复操作)
如果需要每次一键完成标记和格式设置,用以下VBA代码:
Sub MarkMatchingCells() Dim ws As Worksheet Dim hRange As Range, kRange As Range Dim cell As Range, phrase As Range Dim matchFound As Boolean Set ws = ActiveSheet ' 自动获取H列有数据的范围 Set hRange = ws.Range("H2:H" & ws.Cells(ws.Rows.Count, "H").End(xlUp).Row) Set kRange = ws.Range("K2:K13") ' 清除原有格式和标记 hRange.FormatConditions.Delete ws.Range("I2:I" & ws.Cells(ws.Rows.Count, "H").End(xlUp).Row).ClearContents For Each cell In hRange matchFound = False ' 检查每个短语是否匹配 For Each phrase In kRange If InStr(1, cell.Value, phrase.Value, vbTextCompare) > 0 Then matchFound = True Exit For End If Next phrase ' 标记Yes并标绿 If matchFound Then cell.Interior.Color = RGB(146, 208, 80) cell.Offset(0, 1).Value = "Yes" End If Next cell End Sub
使用方法:按Alt+F11打开VBA编辑器,插入模块,粘贴代码,运行即可。
内容的提问来源于stack exchange,提问作者Michael Adams
相关产品推荐
相关产品推荐

