從你的例子看來,你想要統計數據中某些短語的出現,而不僅僅是單詞。如果是這種情況,並且這些短語是非排他性的,那麼下面的公式可能起作用:
Rng是你的列的範圍,例如, $ A $ 1:$ A $ 100 G1包含感興趣的短語,例如,假陽性
=SUMPRODUCT((LEN(Rng)-LEN(SUBSTITUTE(Rng,G1,"")))/LEN(G1))
並根據需要填寫。
請注意,以上將計數2爲「Positive」的數量,因爲「Positive」是False Positive的一部分。如果你想要不同的東西,你需要告訴我們你想要什麼。
編輯既然你現在表明您做不要算誤報爲正的一個實例,我將提供一個用戶定義的函數進行檢查,確保有問題的詞組逗號分隔。
要輸入此用戶定義函數(UDF),alt-F11將打開Visual Basic編輯器。 確保您的項目在Project Explorer窗口中突出顯示。 然後,從頂部菜單中選擇插入/模塊,然後將下面的代碼粘貼到打開的窗口中。
要使用該用戶定義函數(UDF),輸入一個公式像
=FindPhrase(Rng,G1)
在一些細胞
。
Option Explicit
Function FindPhrase(SearchRange As Range, Phrase As String) As Long
Dim RE As Object, MC As Object
Dim sPat As String
Dim V As Variant
Dim I As Long, J As Long
V = SearchRange
Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.MultiLine = True
.ignorecase = True
.Pattern = "(?:^|,\s*)" & Phrase & "(?:\s*,|$)"
End With
For I = 1 To UBound(V, 1)
If RE.test(V(I, 1)) Then J = J + 1
Next I
FindPhrase = J
End Function
EDIT2如果有可能比在每個單元短語的單一實例,並且要單獨算來,然後,在上面,要麼改變
.Pattern = "(?:^|,\s*)Positive(?=(?:\s*,|$))"
或使用以下不同的UDF(它也可以很容易地適應只計算一個實例,並且可以比第一個運行更快):
Option Explicit
Function FindPhrase2(SearchRange As Range, Phrase As String) As Long
Dim V As Variant
Dim I As Long, J As Long, K As Long
Dim aStrings As Variant
V = SearchRange
For I = 1 To UBound(V)
aStrings = Split(V(I, 1), ",")
If IsArray(aStrings) Then
For J = 0 To UBound(aStrings)
If Trim(aStrings(J)) = Trim(Phrase) Then K = K + 1
Next J
Else
If Trim(aStrings) = Trim(Phrase) Then K = K + 1
End If
Next I
FindPhrase2 = K
End Function
嗨,Ron。我試過你的表情,但它一直給我一個錯誤。 = SUMPRODUCT((LEN(Rng)-LEN(SUBSTITUTE(C4:C24,E4,「」)))/ LEN(E4))我在E4中輸入了False Positive。當我說好的時候,它標誌着你的位C24,E4,「」 –
什麼是錯誤? –
我只是用「你輸入的公式包含一個錯誤」來獲得標準的excel對話框......並且順便請看一下更新後的問題。我不希望「假正面」數出「正面」。 –