2014-05-10 48 views
0

我在一列中有一個Id列表。有時細胞具有一個ID,有時一個小區有多個ID的:如何在Excel中搜索單元格內的特定字符串?

[ "52b46bfc763f4ad9198b45ab", "533c0cba763f4a505e8b46db" ] - multiple id's 
52c2ff91763f4a572d8b45e6 - single id 
我使用 COUNTIF計算給定ID的所有實例

。如果每個單元中只有一個ID,它就可以工作。但是,如果單元格中存在多個ID,則它會失敗。

如何計算給定實例在列中出現的次數?很高興使用Excel功能或VBA。

感謝

+0

做多的ID對實際等試算表方括號括起? –

回答

4

使用通配符:

=COUNTIF(A:A,"*52c2ff91763f4a572d8b45e6*") 

例如:

COUNTIF

+1

+1爲簡單起見。小問題:在測試時,我發現它沒有選擇多個ID相同的情況,例如'52c2ff91763f4a572d8b45e6,52c2ff91763f4a572d8b45e6'? –

+2

@AlexP我懷疑這會是一個問題。如果需要在給定單元格中考慮多個相同ID的實例,我會使用類似於以下內容的內容:= SUMPRODUCT((LEN(A1:A3)-LEN(SUBSTITUTE(A1:A3,「52c2ff91763f4a572d8b45e6」,「」)) ))/ LEN(「52c2ff91763f4a572d8b45e6」)) –

+0

我認爲這是工作:'= COUNTIF(vendorOutput.csv!$ F $ 2:$ F $ 1782,「*」&O241&「*」)''。那是你怎麼做的? – dwstein

1

我喜歡輕鬆Gary's Student方法。

此處參考的是使用用戶定義函數的VBA解決方案。例如:

A              B 
1 52c2ff91763f4a572d8b45e6        `=COUNTIDS(A1)` = 4 
2 52c2ff91763f4a572d8b45e6, 52c2ff91763f4a572d8b45e6 
3 52c2ff91763f4a572d8b45e6 
4 52b46bfc763f4ad9198b45ab, 533c0cba763f4a505e8b46db 

一個VBA模塊內部此代碼:

Function CountIDs(id As Range) 
    Dim ids As Range, cl As Range, cnt As Long, arr As Variant, i As Integer 

    Set ids = Range("A1:A" & Range("A1").End(xlDown).Row) //amend to suit your set-up 
    cnt = 0 

    For Each cl In ids 
     If InStr(1, cl, ",", vbTextCompare) Then 
      arr = Split(cl, ",") 

      For i = 0 To UBound(arr) 
       If VBA.Trim(arr(i)) = id Then 
        cnt = cnt + 1 
       End If 
      Next i 

     Else 
      If cl = id Then 
       cnt = cnt + 1 
      End If 
     End If 
    Next 

    CountIDs = cnt 
End Function 
相關問題