我是 Visual Basic 的新手,我需要帮助来尝试一些东西。
我想将 Sheet1 中的所有 A 列与 Sheet2 中的 A 列进行比较,如果找到完全匹配,则将整个匹配行从 Sheet2 复制到 Sheet3。
提前致谢。
我是 Visual Basic 的新手,我需要帮助来尝试一些东西。
我想将 Sheet1 中的所有 A 列与 Sheet2 中的 A 列进行比较,如果找到完全匹配,则将整个匹配行从 Sheet2 复制到 Sheet3。
提前致谢。
我对这个问题的回答的修改版
Sub CopyMatch()
Dim StartingScreenUpdateValue As Boolean
Dim StartingEventsValue As Boolean
Dim StartingCalculations As XlCalculation
With Application
StartingScreenUpdateValue = .ScreenUpdating
StartingEventsValue = .EnableEvents
StartingCalculations = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Dim varTestValues As Variant
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As WorkSheet
Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")
Set sh3 = Sheets("Sheet3")
With sh2
varTestValues = .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
End With
With sh1
.Range("A1", .Range("A" & .Rows.Count).End(xlUp)) _
.AutoFilter Field:=1, Criteria1:=Application.Transpose(varTestValues), Operator:=xlFilterValues
.Range("A2", sh1.Range("A" & .Rows.Count).End(xlUp)) _
.SpecialCells(xlCellTypeVisible).EntireRow.Copy sh3.Range("A1")
.AutoFilterMode = False
End With
With Application
.ScreenUpdating = StartingScreenUpdateValue
.EnableEvents = StartingEventsValue
.Calculation = StartingCalculations
End With
End Sub
注意:此代码运行假设您的数据有标题,如果没有请告知。
请记住,始终在您的数据副本上运行任何代码,而不是在您的实际数据上运行,直到您确信它可以 100% 工作。