如何比较 VBA 中不同工作表中的两个值?
How to compare two values in different worksheet in VBA?
我是 VBA 的新手。在这里,我想比较属于同一工作簿的不同工作表中的两个值。在 Sheet1 中,只有 A 列填充了几个数字(即 1、2、3、4、5),而在 Sheet2 中,三列填充了 enter code here
值。而在 Sheet2 中,A 列具有以下值(即 2、1、4、3、5)。在这里,我将 Sheet1 A 列的值与 Sheet2 中 A 列的值进行比较。
我收到
的连续错误
Runtime error "13"
Option Explicit
Sub chek()
Dim ws As Workbook
Set ws = ThisWorkbook
Dim sheet As Worksheet
Dim firstRng As Integer
firstRng = Sheet2.Range("A:A").Value
Dim secondrng As Integer
secondrng = Sheet1.Range("A:A").Value
Dim i As Integer
For i = 1 To 5
For Each sheet In Worksheets
If IsArray(secondrng) = IsArray(firstRng) Then
Sheet2.Range("A1:C1").Value.Copy
Sheet3.PasteSpecial
End If
Next sheet
Next i
End Sub
这段代码应该可以运行。正如已经提到的:
您不能将范围分配给整数。其次,VBA 对于数组来说不是很好,这就是为什么我喜欢将值 1 乘 1 进行比较。我没有得到的是,如果你想在列相等时复制,或者如果你想复制一切都平等。下面的代码执行第一个。
Sub check()
Dim ws As Workbook
Set ws = ThisWorkbook
Dim firstrng As Range
Dim secondrng As Range
Set firstrng = Sheets(1).Range("A:A")
Set secondrng = Sheets(2).Range("A:A")
Dim i As Integer
For i = 1 To 5
If firstrng.Cells(i, 1).Value = secondrng.Cells(i, 1).Value Then
Sheets(1).Range("A" & i & ":C" & i).Copy Destination:=Sheets(3).Range("A" & i & ":C" & i)
End If
Next i
End Sub
Richa,你的代码完全错误,试试这个解决方案
Sub Columnscompare() 'ok
Dim Dn As Range
LR1 = Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row
LR2 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
LR = LR2
If LR1 > LR2 Then LR = LR1
For Each Dn In Sheets(1).Range("A1:A" & LR)
If Not Dn = Sheets(2).Range("A1")(Dn.Row, Dn.Column) Then MsgBox "Not equals Ranges": Exit Sub
Next Dn
MsgBox "Both Ranges have the same data"
End Sub
我是 VBA 的新手。在这里,我想比较属于同一工作簿的不同工作表中的两个值。在 Sheet1 中,只有 A 列填充了几个数字(即 1、2、3、4、5),而在 Sheet2 中,三列填充了 enter code here
值。而在 Sheet2 中,A 列具有以下值(即 2、1、4、3、5)。在这里,我将 Sheet1 A 列的值与 Sheet2 中 A 列的值进行比较。
我收到
Runtime error "13"
Option Explicit
Sub chek()
Dim ws As Workbook
Set ws = ThisWorkbook
Dim sheet As Worksheet
Dim firstRng As Integer
firstRng = Sheet2.Range("A:A").Value
Dim secondrng As Integer
secondrng = Sheet1.Range("A:A").Value
Dim i As Integer
For i = 1 To 5
For Each sheet In Worksheets
If IsArray(secondrng) = IsArray(firstRng) Then
Sheet2.Range("A1:C1").Value.Copy
Sheet3.PasteSpecial
End If
Next sheet
Next i
End Sub
这段代码应该可以运行。正如已经提到的: 您不能将范围分配给整数。其次,VBA 对于数组来说不是很好,这就是为什么我喜欢将值 1 乘 1 进行比较。我没有得到的是,如果你想在列相等时复制,或者如果你想复制一切都平等。下面的代码执行第一个。
Sub check()
Dim ws As Workbook
Set ws = ThisWorkbook
Dim firstrng As Range
Dim secondrng As Range
Set firstrng = Sheets(1).Range("A:A")
Set secondrng = Sheets(2).Range("A:A")
Dim i As Integer
For i = 1 To 5
If firstrng.Cells(i, 1).Value = secondrng.Cells(i, 1).Value Then
Sheets(1).Range("A" & i & ":C" & i).Copy Destination:=Sheets(3).Range("A" & i & ":C" & i)
End If
Next i
End Sub
Richa,你的代码完全错误,试试这个解决方案
Sub Columnscompare() 'ok
Dim Dn As Range
LR1 = Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row
LR2 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
LR = LR2
If LR1 > LR2 Then LR = LR1
For Each Dn In Sheets(1).Range("A1:A" & LR)
If Not Dn = Sheets(2).Range("A1")(Dn.Row, Dn.Column) Then MsgBox "Not equals Ranges": Exit Sub
Next Dn
MsgBox "Both Ranges have the same data"
End Sub