2013-06-12 4 views
1

У меня есть несколько значений в ячейке A1, которые разделены символом ';'. Некоторые из тех же значений могут быть в ячейке B1. Мне нужно искать значения в ячейке A1, используя те, что находятся в ячейке B1. Все значения, которые не найдены, затем должны быть представлены в ячейке C1.строки поиска в ячейке

Например - Cell A1 (Apple, оранжевый, вишневый) ячейка B1 (Apple, оранжевый;) клеток c1 необходимость отражения "Cherry" не найдено

Я попробовал этот код:

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

что вы пробовали? отправьте свой код и сообщите нам, что не работает. Читайте о функции 'Split()' как отправной точке –

+0

Я не могу работать в цикле. Я попробовал этот код пожалуйста Chek Sub Splitvalue() дим, ул mystr Как вариант Dim ф As Integer ул = Split (Range ("A1") Значение,. ";") КСС = LBound (ул) Для UBound (ул) mystr = ул (ф) Следующая End Sub – Mukul

ответ

0

Настройте свой sheet1 как этот

setup sheet1

использования этого кода

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 

и результаты должен выглядеть так: result

0

Почему бы просто не разделить вторую ячейку, как вы разделили первую ячейку? Затем посмотрите, найдете ли вы каждый элемент A1 в B1, иначе выведите его в C1?

Это не элегантный, но будет работать:

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

Один из способов:

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) 
Смежные вопросы