[英]VBA Macro to compare cell values
I have problem in comparing cells with different value and give what ever is missing in one cell into third cell. 我在比较具有不同值的单元格时遇到了问题,并将一个单元格中缺少的内容提供给第三个单元格。
Example: 例:
I am trying to match two cells: 我正在尝试匹配两个单元格:
cell 1 (abcd ) & cell 2 (cab) both have " abc" in common and I want the macro to show 单元格1(abcd)和单元格2(cab)都有共同的“ abc”,我希望宏显示
missing value "d" to be shown in cell 3. 缺失值“ d”将显示在单元格3中。
Consider: 考虑:
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
So if A1 contains abcdefg and B1 contains def then =WhatsMissing(A1,B1) would display: 因此,如果A1包含abcdefg,而B1包含def,则= WhatsMissing(A1,B1)将显示:
abcg abcg
If your values will have spaces in them for sure, then you can split them with the Split function and put them into arrays (or dictionary objects) and compare the two dictionaries for differences. 如果您的值中肯定有空格,则可以使用Split函数将它们拆分,然后将它们放入数组(或字典对象)中,并比较两个字典的区别。
Here's a simple example: 这是一个简单的例子:
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
If cell 1 had: abcd 如果单元格1具有:abcd
And cell 2 had: cabe 单元2具有:cabe
This will print out: de 这将打印出:de
Hope this helps 希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.