2014-05-10 5 views
0

J'ai une liste d'ID dans une colonne. parfois la cellule a un seul identifiant, parfois une cellule a plusieurs id:Comment rechercher une chaîne spécifique dans une cellule dans Excel?

[ "52b46bfc763f4ad9198b45ab", "533c0cba763f4a505e8b46db" ] - multiple id's 
52c2ff91763f4a572d8b45e6 - single id 

J'utilise COUNTIF compter toutes les instances d'un identifiant donné. S'il n'y avait qu'un seul identifiant dans chaque cellule, cela fonctionnerait. Mais, quand il y a plus d'un identifiant dans une cellule, il échoue. Comment puis-je compter le nombre de fois qu'une instance donnée apparaît dans la colonne? Heureux d'utiliser des fonctions Excel ou VBA.

grâce

+0

Avez plusieurs années ID ont des crochets autour d'eux sur la spreadhseet réelle? –

Répondre

4

utilisation wildcards:

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

par exemple:

COUNTIF

+1

+1 pour plus de simplicité. Point secondaire: en testant ceci, j'ai trouvé qu'il n'a pas détecté de cas où plusieurs ID sont identiques, par ex. '52c2ff91763f4a572d8b45e6, 52c2ff91763f4a572d8b45e6'? –

+2

@AlexP Je doute que ce serait un problème. Si l'on devait prendre en compte plusieurs instances du même ID dans une cellule donnée, j'utiliserais quelque chose comme: = SUMPRODUCT ((LEN (A1: A3) -LEN (SUBSTITUTE (A1: A3, "52c2ff91763f4a572d8b45e6", "")))/LEN ("52c2ff91763f4a572d8b45e6")) –

+0

Je pense que cela fonctionne: '= COUNTIF (vendorOutput.csv! $ F $ 2: $ F $ 1782," * "& O241 &" * ")'. Est-ce ainsi que tu le ferais? – dwstein

1

J'aime approche Gary's Student pour la facilité.

Pour référence, voici une solution VBA utilisant une fonction définie par l'utilisateur. Exemple:

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

Ce code à l'intérieur d'un module 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 
Questions connexes