Excel 查找单元格中某个单词的出现次数
我试图找到字符串单元格中给定单词的出现次数。用于计算发生率的可能公式是什么?假设Excel 查找单元格中某个单词的出现次数,excel,Excel,我试图找到字符串单元格中给定单词的出现次数。用于计算发生率的可能公式是什么?假设A1具有fun-fun-no-fun并且您想知道“fun”发生了多少次,可以使用以下公式: =(LEN(A1)-LEN(SUBSTITUTE(A1,"fun","")))/LEN("fun") 编辑:注意这可能不是完美的,因为它将返回funky fun no的3,而不是2。您可以通过在要查找的单词周围添加空格来解决此问题…然后检查单元格中的第一个单词是否与您想要的匹配。。。所以我认为这是一个有限的用例 如果您只需要
A1
具有fun-fun-no-fun
并且您想知道“fun”发生了多少次,可以使用以下公式:
=(LEN(A1)-LEN(SUBSTITUTE(A1,"fun","")))/LEN("fun")
编辑:注意这可能不是完美的,因为它将返回
funky fun no
的3
,而不是2
。您可以通过在要查找的单词周围添加空格来解决此问题…然后检查单元格中的第一个单词是否与您想要的匹配。。。所以我认为这是一个有限的用例 如果您只需要计算整个单词,这有点麻烦,但可以:
=SUMPRODUCT(--(TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",LEN(A1))),LEN(A1)*(ROW(A$1:INDEX($A:$A,LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1)," ",""))+1))-1)+1,LEN(A1)))="fun"))
如果您无法通过标准公式方法获得答案,请尝试此自定义项。将其放入VBA编辑器中的新模块中。如果您不确定如何在excel VBA中创建新模块,请使用Google“如何在excel VBA中创建新模块”
Public Function CountSpecificWord(ByVal strText As String, ByVal strWord As String, Optional ByVal bIgnoreCase As Boolean = False) As Long
Application.Volatile
Dim i As Long, strThisWord As String, arrWords() As String
arrWords = Split(strText, " ")
If bIgnoreCase Then strWord = UCase(strWord)
For i = 0 To UBound(arrWords)
strThisWord = arrWords(i)
If bIgnoreCase Then strThisWord = UCase(strThisWord)
If strWord = strThisWord Then CountSpecificWord = CountSpecificWord + 1
Next
End Function
有两个参数
- strText-要在其中搜索的文本
- strWord-您要搜索的文本
- bIgnoreCase-是否希望搜索区分大小写?这是可选的,默认值为false
我希望这能有所帮助。您能给出一些输入和输出示例吗?你需要完整的文字吗?