我有两个擅长
Excel1有7列,其中3列已填充。 Excel2也有7列全部填写
Excel2的前3列包含来自Excel1的数据。 Excel1有大约50行,而Excel2有10行
我想将所有数据从Excel2更新到Excel1(更新整行)
我想将这10行更新为Excel2(已经从Excel2获得了第3列的数据)。更新行宏时应检查前三列的数据(它应该完全匹配)。
请帮忙。
我试着在这里写代码 但它显示出格式化错误。 Sory,我可以在这里上传它。
答案 0 :(得分:0)
它完成了...
我使用Do直到循环如下:
Sub Macro6()
Dim rw As Integer, clm As Integer, clcnt1 As Integer, clcnt2 As Integer, clmcnt As Integer
Dim str As String, str1 As String, str2 As String
rw = 1
clm = 1
clmcnt = 0
Do
clcnt1 = Range("B1").End(xlDown).Row
Rows("1:1").Select
Range("E1").Activate
Selection.AutoFilter
Range("B" & rw).Select
Windows("dfg.xlsx").Activate
clcnt2 = Range("B1").End(xlDown).Row
clmcnt = cntcnt + 1
str = Cells(rw, clm + 1).Value
Selection.Copy
Windows("testing1.xlsm").Activate
ActiveSheet.Range("$B$1:$E$" & clcnt1).AutoFilter Field:=1, Criteria1:=str, Operator:=xlAnd
Windows("dfg.xlsx").Activate
Range("D" & rw).Select
Application.CutCopyMode = False
Selection.Copy
Windows("testing1.xlsm").Activate
Range("D" & rw).Select
str1 = Cells(rw, clm + 3).Value
ActiveSheet.Range("$B$1:$E$" & clcnt1).AutoFilter Field:=3, Criteria1:=str1, Operator:=xlAnd
Range("E" & rw).Select
Windows("dfg.xlsx").Activate
Range("E" & rw).Select
str2 = Cells(rw, clm + 4).Value
Application.CutCopyMode = False
Selection.Copy
Windows("testing1.xlsm").Activate
ActiveSheet.Range("$B$1:$E$" & clcnt1).AutoFilter Field:=4, Criteria1:=str2, Operator:=xlAnd
Windows("dfg.xlsx").Activate
Rows(rw).Select
Range("E" & rw).Activate
Application.CutCopyMode = False
Selection.Copy
Windows("testing1.xlsm").Activate
Rows(rw + 1).Select
Range("E" & rw + 1).Activate
ActiveSheet.Paste
Range("E" & rw).Select
Application.CutCopyMode = False
Selection.AutoFilter
rw = rw + 1
clcnt2 = clcnt2 + 1
Loop Until rw = clcnt2
ActiveWorkbook.Save
End Sub
答案 1 :(得分:0)
ActiveSheet.Range("$B$2:$E$135").Offset(1, 0).SpecialCells(xlCellTypeVisible).Row
感谢所有人的帮助