2013-06-12 3 views
1

J'ai plusieurs valeurs dans la cellule A1 qui sont séparées par un ';'. Certaines des mêmes valeurs peuvent être dans la cellule B1. J'ai besoin de rechercher les valeurs dans la cellule A1 en utilisant ceux de la cellule B1. Toutes les valeurs qui ne sont pas trouvées doivent alors être présentées dans la cellule C1.rechercher des chaînes dans la cellule

Par exemple, - cellule A1 (Apple, orange, cerise) B1 cellulaire (Apple, orange;) cellule c1 nécessité de réfléchir "Cherry" ne pas trouvé

J'ai essayé ce code:

Sub Splitvalue() 
    Dim str, mystr As Variant 
    Dim tp As Integer 
    str = Split(Range("A1").Value, ";") 
    For tp = LBound(str) To UBound(str) 
     mystr = str(tp) 
    Next 
End Sub 
+1

qu'avez-vous essayé? Postez votre code et dites-nous ce qui ne fonctionne pas. Lisez à propos d'une fonction 'Split()' comme point de départ –

+0

Je ne suis pas capable de travailler en boucle. J'ai essayé ce code pls chek Sub Splitvalue() Dim str, mystr Comme variante Dim tp As Integer str = de Split (Range ("A1") valeur. ";") Pour tp = LBound (str) Pour UBound (str) mystr = str (tp) Suivant End Sub – Mukul

Répondre

0

Définissez vos sheet1 comme celui-ci

setup sheet1

l'utilisation de ce code

Option Explicit 

Sub Splitvalue() 

    Dim lastRow As Long 
    lastRow = Range("A" & Rows.Count).End(xlUp).Row 

    Dim c As Range 
    Dim A As Variant, B As Variant 
    Dim i As Long, j As Long 
    Dim x As Boolean 

    Columns(3).ClearContents 

    For Each c In Range("A1:A" & lastRow) 
     A = Split(c, ";") 
     B = Split(c.Offset(0, 1), ";") 
     For i = LBound(A) To UBound(A) 
     For j = LBound(B) To UBound(B) 
      If A(i) = B(j) Then 
       x = True 
       Exit For 
      Else 
       x = False 
      End If 
     Next j 
     If Not x Then 
      If IsEmpty(c.Offset(0, 2)) Then 
       c.Offset(0, 2) = A(i) 
      Else 
       c.Offset(0, 2).Value = c.Offset(0, 2).Value & ";" & A(i) 
      End If 
     End If 
     Next i 
    Next 

End Sub 

et vos résultats devrait ressembler à ceci result

0

Pourquoi ne pas simplement diviser la deuxième cellule comme si vous divisiez la première cellule? Alors voir si vous trouvez chaque élément de A1 dans B1, autrement sortie à C1?

Ce n'est pas élégant, mais fonctionnera:

Sub Splitvalue() 
    Dim str, mystr As Variant 
    Dim stri As Variant 
    Dim tp As Integer 
    str = Split(Range("A1").Value, ";") 
    str2 = Split(Range("B1").Value, ";") 
    For tp = LBound(str) To UBound(str) 
     mystr = str(tp) 
     'Debug.Print mystr 
     Dim found As Boolean 
     found = False 
     For Each stri In str2 
      'Debug.Print stri 
      If stri = mystr Then 
       found = True 
      End If 
     Next stri 
     If found = False Then 
      Debug.Print mystr 
     End If 
    Next 
End Sub 
0

Une façon:

dim needle() as string: needle = split(Range("B1").Value, ";") 
dim haystack as string: haystack = ";" & Range("A1").Value & ";" 
dim i as long 

for i = 0 To ubound(needle) 
    haystack = replace$(haystack, ";" & needle(i) & ";", ";") 
next 

If len(haystack) = 1 then haystack = ";;" 
Range("C1").Value = Mid$(haystack, 2, Len(haystack) - 2) 
Questions connexes