使用VBA逐行更新数据直到最后一行

时间:2013-06-15 14:50:03

标签: excel vba

我有两个擅长 Excel1有7列,其中3列已填充。 Excel2也有7列全部填写 Excel2的前3列包含来自Excel1的数据。 Excel1有大约50行,而Excel2有10行 我想将所有数据从Excel2更新到Excel1(更新整行)
我想将这10行更新为Excel2(已经从Excel2获得了第3列的数据)。更新行宏时应检查前三列的数据(它应该完全匹配)。 请帮忙。

我试着在这里写代码 但它显示出格式化错误。 Sory,我可以在这里上传它。

2 个答案:

答案 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

感谢所有人的帮助