返回列表 上一主題 發帖

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

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

工作需要,想學vba ,麻煩高手幫忙解答一下
請問一下,我 的EXCEL有兩個活頁簿, (總表) ( 123 )
總表:   a:姓名  b:身份證   c:生日    d:電話
123:   a:身份證  b:生日
如何將(123)的身份證與(總表)身份證比對,
如果(123)的身份證與(總表)身份證,一樣,
則將(123)的生日(欄位),填到(總表)生日(欄位).

(總表約有 3000筆資料)
(123約有 500筆資料)

你好:
  下列語法請試試是否合適
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

回復 2# dechiuan999
注意With裡的敘述要加  .   
''''''''''''''''''''''''''''''''''''
With
Set mWk1 = Workbooks("總表")
   With mWk1
     Set mSht1 = .Worksheets(1)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With Workbooks.Open(ThisWorkbook.Path & "\" & 123 & ".xls")
With .Sheets(1)

TOP

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

TOP

還是不行,
不行用迴圈寫 VBA嗎,

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

大大:
可以請問一下
With Workbooks.Open(ThisWorkbook.Path & "\" & "總表" & ".xls")
是什麼意思嗎??

TOP

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

TOP

大大,不好意思
執行後出現 陣列索引超出範圍??

TOP

        靜思自在 : 犯錯出懺悔心,才能清淨無煩惱。
返回列表 上一主題