0

異なる値を持つセルを比較する際に問題があり、1 つのセルに欠けているものを 3 番目のセルに与えます。

例:

私は2つのセルを一致させようとしています:

セル 1 (abcd ) とセル 2 (cab) の両方に共通の「ab c」があり、マクロを表示したい

欠損値「d」がセル 3 に表示されます。

4

2 に答える 2

0

値に確実にスペースが含まれる場合は、Split 関数を使用して値を分割し、それらを配列 (または辞書オブジェクト) に入れ、2 つの辞書の違いを比較できます。

簡単な例を次に示します。

Option Explicit

Sub getDifferences()
    Dim s1() As String
    Dim s2() As String

    s1 = Split(Range("A1").Value, " ") ' a b c d
    s2 = Split(Range("B1").Value, " ") ' c a b

    Dim d1 As Object
    Dim d2 As Object

    Set d1 = CreateObject("Scripting.Dictionary")
    Set d2 = CreateObject("Scripting.Dictionary")

    ' collect the values from cell 1
    Dim i As Long
    For i = 0 To UBound(s1)
        d1.Add s1(i), i
    Next

    ' collect the values from cell 2
    For i = 0 To UBound(s2)
        d2.Add s2(i), i
    Next


    Dim missing As Object
    Set missing = CreateObject("Scripting.Dictionary")
    Dim sKey As Variant

    ' check missing items from first cell to second
    For Each sKey In d1.keys()
        If (d2.exists(sKey) = False) Then
            missing.Add sKey, 1
        End If
    Next

    ' check missing items from second cell to first
    For Each sKey In d2.keys()
        If (d1.exists(sKey) = False) Then
            missing.Add sKey, 1
        End If
    Next

    ' display the missing items between the two
    For Each sKey In missing.keys()
        Debug.Print sKey
    Next


End Sub

セル 1 の場合: abcd

セル 2 には次のものがありました。

これは次のように出力されます: de

お役に立てれば

于 2013-11-04T21:33:15.280 に答える
0

検討:

Public Function WhatsMissing(Big As String, Little As String) As String
    Dim V As String
    V = Big
    For i = 1 To Len(Little)
        ch = Mid(Little, i, 1)
        V = Replace(V, ch, "")
    Next i
    WhatsMissing = V
End Function

したがって、A1 にabcdefgが含まれ、B1 にdefが含まれている場合、=WhatsMissing(A1,B1) は次のように表示されます。

abcg

于 2013-11-04T21:26:03.877 に答える