0

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

我试图在这里写代码,
但它显示格式错误。对不起,我可以在这里上传。

4

2 回答 2

0

嘿,现在完成了...
我使用以下代码获取过滤数据的行号,然后参考此行号进行更新
ActiveSheet.Range("$B$2:$E$135").Offset(1, 0).SpecialCells(xlCellTypeVisible).Row

感谢大家的帮助

于 2013-06-24T03:33:12.153 回答
0

它完成了......
我使用 Do until 循环如下:

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
于 2013-06-16T08:50:26.053 回答