異なる値を持つセルを比較する際に問題があり、1 つのセルに欠けているものを 3 番目のセルに与えます。
例:
私は2つのセルを一致させようとしています:
セル 1 (abcd ) とセル 2 (cab) の両方に共通の「ab c」があり、マクロを表示したい
欠損値「d」がセル 3 に表示されます。
値に確実にスペースが含まれる場合は、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
お役に立てれば
検討:
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