0

私は2つのエクセルを持っています。
Excel1 には 7 つの列があり、そのうち 3 つが入力されています。Excel2 にも 7 つの列がすべて入力されています。
Excel2 の最初の 3 列には、Excel1 からのデータがあります。Excel1 には約 50 行あり、Excel2 には 10 行あります。
Excel2 から Excel1 にすべてのデータを更新したい (行全体
を更新) これらの 10 行を Excel2 に更新したい (Excel2 からの最初の 3 列のデータが既にある)。行の更新中、マクロは最初の 3 つの列のデータをチェックする必要があります (正確に一致する必要があります)。助けてください。

ここにコードを書き込もうとしましたが
、フォーマットエラーが表示されます。申し訳ありませんが、ここにアップロードできます。

4

2 に答える 2

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 に答える