Excel 比较两个范围的vba代码

Excel 比较两个范围的vba代码,excel,vba,Excel,Vba,我比较了两个范围,以找到不比较的值。这些值需要粘贴到新的单元格中。我的代码工作得很完美,但由于某些原因,如果单元格值仅为数字,它将无法工作 请看下面 Sub RangeCompare2() Dim Rg1 As Range, Rg2 As Range, c1 As Range, rgPaste2 As Range Dim lngRowOffset3 As Long On Error Resume Next lngRowOffset3 = 0 Set Rg1 = Worksheets("Br

我比较了两个范围,以找到不比较的值。这些值需要粘贴到新的单元格中。我的代码工作得很完美,但由于某些原因,如果单元格值仅为数字,它将无法工作

请看下面

Sub RangeCompare2()

Dim Rg1 As Range, Rg2 As Range, c1 As Range, rgPaste2 As Range
Dim lngRowOffset3 As Long

On Error Resume Next

lngRowOffset3 = 0
Set Rg1 = Worksheets("Bridget Madumo").Range("AQ40:AQ70")
Set Rg2 = Worksheets("Bridget Madumo").Range("C69:C122")
Set rgPaste2 = Worksheets("BM CS").Range("C102")
Set rgPaste2 = rgPaste2.Cells(1, 1)

On Error GoTo 0

For Each c1 In Rg1.Cells

    If Application.WorksheetFunction.CountIf(Rg2, c1.Value & "*") = 0 Then

    rgPaste2.Offset(lngRowOffset3).Value = c1.Value
    rgPaste2.Offset(lngRowOffset3, 1).Value = c1.Offset(, 1).Value
    rgPaste2.Offset(lngRowOffset3, 2).Value = c1.Offset(, 2).Value
    rgPaste2.Offset(lngRowOffset3, 3).Value = c1.Offset(, 3).Value
    lngRowOffset3 = lngRowOffset3 + 1
    End If

Next c1

Application.CutCopyMode = False

End Sub

c1.Value&“*”
将其转换为文本字符串,countif将找不到与数字匹配的文本字符串。将两个范围加载到内存数组中,循环数组并进行比较。这样,您可以将两者转换为文本字符串,并使用
Like
Hi Scott进行比较。谢谢你的解释。我不擅长vba。您是否可以向我解释一下如何将范围加载到内存数组中,并通过循环只留下不匹配的值?