2014-05-10 50 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 
相关问题