2014-04-13 41 views
0

我有一個數據表,我要計算列中某個單詞的所有出現次數。但是該列可以包含多個用逗號分隔的單詞。Excel - 在行和逗號分隔單元格中發生的計數

False Negative 
False Negative, False Positive 

這是一個例子。結果列只能包含以下表述:

False Negative 
False Positive 
Positive 

所以我想包括基於上面的例子的結果列:

False Negative 2 
False Positive 1 

這樣我可以從值使得圖。

我不是很擅長Excel,但我知道如何輸入表達式而不是如何編寫邏輯。

感謝

編輯:

我不想短語 「假陽性」 計數1了關於 「積極」。它需要尋找逗​​號。

回答

2

從你的例子看來,你想要統計數據中某些短語的出現,而不僅僅是單詞。如果是這種情況,並且這些短語是非排他性的,那麼下面的公式可能起作用:

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 
+0

嗨,Ron。我試過你的表情,但它一直給我一個錯誤。 = SUMPRODUCT((LEN(Rng)-LEN(SUBSTITUTE(C4:C24,E4,「」)))/ LEN(E4))我在E4中輸入了False Positive。當我說好的時候,它標誌着你的位C24,E4,「」 –

+0

什麼是錯誤? –

+0

我只是用「你輸入的公式包含一個錯誤」來獲得標準的excel對話框......並且順便請看一下更新後的問題。我不希望「假正面」數出「正面」。 –

相關問題