1

セル A1 に「;」で区切られた複数の値があります。同じ値の一部がセル B1 にある場合があります。セル B1 の値を使用して、セル A1 の値を検索する必要があります。見つからないすべての値は、セル C1 に表示する必要があります。

例 - セル A1 (アップル;オレンジ;チェリー) セル B1 (アップル;オレンジ;) セル c1 は、見つからないため「チェリー」を反映する必要があります

私はこのコードを試しました:

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
4

3 に答える 3

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)
于 2013-06-12T11:45:27.977 に答える
0

最初のセルを分割するように、2 番目のセルを分割しないのはなぜですか? 次に、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
于 2013-06-12T11:04:20.483 に答える
0

このようにシート1を設定します

セットアップシート1

このコードを使用する

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

結果は次のようになります 結果

于 2013-06-12T11:17:53.183 に答える