根据文本字符串检查一系列文本并返回" yes"或"不"

时间:2017-06-23 15:39:57

标签: excel excel-formula

我有一个文本字符串(标题)列表和一个" bad"关键字我想在这些标题中识别。

我遇到的问题是如何识别字符串中的单个文本。几个简单的公式可以做到完全匹配,但我需要它来识别标题中的单词。

例如,在"软件销售代表"我需要它来识别"软件"在列表中并返回单词" bad"。

我已经浏览了其他问题,这些问题在Stacked上没有特别的答案。

其他类似的问题已经说过这可以用星号/通配符来完成,但这不起作用。我知道条件格式可以做到这一点,但我需要一个公式,因为我有超过100"坏"关键字。

就我而言:

=IF(COUNTIF(K:K,"*"&E2&"*"),"Bad","Okay") 

但是这个公式仍然只返回完全匹配。

E列是标题。列K是关键字。

2 个答案:

答案 0 :(得分:0)

您需要使用以下公式:

=IF(SUMPRODUCT(--(ISNUMBER(SEARCH($K$1:INDEX(K:K,MATCH("zzz",K:K)),E2)))),"Bad","Okay")

enter image description here

答案 1 :(得分:0)

将此函数放入模块中,并从像=ContainsBadwords(badwordsrange,rangetotest;false;false)

这样的单元格中调用它
Public Function ContainsBadwords(BadWordList As range, ByVal SuspectRange As range, Optional ExactMatch As Boolean = True, Optional CaseSensitive As Boolean = True)
For Each ArrayItem In SuspectRange
If Not CaseSensitive Then ArrayItem = Strings.lcase(ArrayItem)

        For Each Subwhat In BadWordList
        If ExactMatch Then
        test = (ArrayItem = Subwhat)
        Else
        test = InStr(ArrayItem, Subwhat) >= 1
        End If
        If test Then: ContainsBadwords = test: Exit Function
        Next Subwhat
If test Then: ContainsBadwords = test: Exit Function
n = n + 1
Next ArrayItem
End Function

如果没有坏词,则返回TRUE表示blasphemy或FALSE。