[英]VBA Macro to compare cell values
我在比较具有不同值的单元格时遇到了问题,并将一个单元格中缺少的内容提供给第三个单元格。
例:
我正在尝试匹配两个单元格:
单元格1(abcd)和单元格2(cab)都有共同的“ abc”,我希望宏显示
缺失值“ d”将显示在单元格3中。
考虑:
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
如果您的值中肯定有空格,则可以使用Split函数将它们拆分,然后将它们放入数组(或字典对象)中,并比较两个字典的区别。
这是一个简单的例子:
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具有:cabe
这将打印出:de
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.