返回列表 上一主題 發帖

[發問] excel 利用vba比對兩個活頁簿資料

你好:
  下列語法請試試是否合適
Sub aa()

Dim mDic As Object
Dim mWk1 As Workbook
Dim mSht1 As Worksheet
Dim mRng As Range
Dim E As Range

Set mDic = CreateObject("Scripting.Dictionary")
Set mWk1 = Workbooks("總表")
With mWk1
    Set mSht1 = Worksheets(1)
    With mSht1
        Set mRng = .Range("b2:b" & .[a65536].End(xlUp).Row)
    End With
   
    For Each E In mRng
        If mDic.Exists(E.Value) = False Then
            mDic(E.Value) = E.Offset(, 1).Value
        End If
    Next
End With

With Workbooks.Open(ThisWorkbook.Path & "\" & 123 & ".xls")

With Sheets(1)

    For Each E In .Range(.[A2], .[A2].End(xlDown))

        E.Offset(, 1) = mDic(E.Value)

    Next

End With

.Close

End With

End Sub

TOP

謝謝版主大大。
小弟在語法上
會再多加注意。

TOP

你好:
  小弟疏失將總表及123二者
顛倒了。
請再重試一次
Sub aa()

Dim mDic As Object
Dim mWk1 As Workbook
Dim mSht1 As Worksheet
Dim mRng As Range
Dim E As Range

Set mDic = CreateObject("Scripting.Dictionary")
Set mWk1 = Workbooks("123")
With mWk1
    Set mSht1 = .Worksheets(1)
    With mSht1
        Set mRng = .Range("a2:a" & .[a65536].End(xlUp).Row)
    End With
   
    For Each E In mRng
        If mDic.Exists(E.Value) = False Then
            mDic(E.Value) = E.Offset(, 1).Value
        End If
    Next
End With

With Workbooks.Open(ThisWorkbook.Path & "\" & "總表" & ".xls")

    With Sheets(1)

        For Each E In .Range(.[b2], .[b2].End(xlDown))

            E.Offset(, 1) = mDic(E.Value)

        Next

    End With

.Close

End With

End Sub

TOP

你好:
套用至Workbooks物件時用open方法
也就是開啟一個活頁簿
你可在open的位置按f1即可
看到open方法的使用說明。

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題