2017-08-08 72 views
0

另一個值I有2個工作簿甲& B.VBA匹配值,則返回從工作簿乙

工作簿A是客戶發票(5000行)的列表。客戶ID在A列。 工作簿B是客戶詳細信息,包含15000行和100列。客戶ID在B列。

使用客戶ID,我試圖複製D,E,G,O,AA,AD,AF,BD,CA(客戶的地址,電話,電子郵件)工作簿B到工作簿列F到N.

我一直在使用vlookup進行此操作,但由於數據每天都會刷新並且我需要一次又一次地重新輸入公式,因此太耗時。

我試圖使用VBA循環功能,但超時(數據太大)。我嘗試了不同的方式,比如匹配函數,我似乎無法得到結果。

下面是我試過的代碼。我很抱歉,我是VBA的超級新手。我認爲雙循環對於這樣的大數據並不鼓勵。客戶數據有100列和行14000,發票上有3000行

Sub CustomerData() 

Dim r As Long 
Dim r1 As Long 
Dim sheet1 As Worksheet 
Dim sheet2 As Worksheet 

Dim FilePath1 As String 
FilePath1 = Range("Q1").Value 

Workbooks.Open (FilePath1 & "invoice.xlsx") 
Workbooks.Open (FilePath1 & "customer.xls") 
Set sheet1 = Workbooks("customer.xls").Worksheets("Customers") 
Set sheet2 = Workbooks("invoice.xlsx").Worksheets("unpaid_invoices") 

r = 0 

Do 
    r1 = 0 
    Do 
     If sheet2.Range("A1").Offset(r, 0) = sheet1.Range("B1").Offset(r1, 0) Then 
     sheet2.Range("A1").Offset(r, 13) = sheet1.Range("B1").Offset(r1, 8) 
     sheet2.Range("A1").Offset(r, 14) = sheet1.Range("B1").Offset(r1, 9) 
     sheet2.Range("A1").Offset(r, 15) = sheet1.Range("B1").Offset(r1, 38) 
     sheet2.Range("A1").Offset(r, 16) = sheet1.Range("B1").Offset(r1, 64) 
     sheet2.Range("A1").Offset(r, 17) = sheet1.Range("B1").Offset(r1, 25) 
     sheet2.Range("A1").Offset(r, 18) = sheet1.Range("B1").Offset(r1, 39) 
     sheet2.Range("A1").Offset(r, 19) = sheet1.Range("B1").Offset(r1, 41) 
     sheet2.Range("A1").Offset(r, 20) = sheet1.Range("B1").Offset(r1, 44) 
     sheet2.Range("A1").Offset(r, 21) = sheet1.Range("B1").Offset(r1, 78) 
     sheet2.Range("A1").Offset(r, 22) = sheet1.Range("B1").Offset(r1, 99) 
     sheet2.Range("A1").Offset(r, 23) = sheet1.Range("B1").Offset(r1, 100) 
     End If 
    r1 = r1 + 1 
    Loop Until sheet1.Range("B1").Offset(r1, 0).Value = "" 
r = r + 1 
Loop Until sheet2.Range("A1").Offset(r, 0).Value = "" 
End Sub 

我一直在尋找的網站上,有一天,我似乎無法得到我想要的東西。我會很高興,如果有人能指向我正確的方向

請幫助。謝謝

+5

請編輯您的問題,以顯示你嘗試過的代碼。 – YowE3K

+0

嗨YowE3K。感謝您的提醒。我已經添加了代碼。我很抱歉,我對vba和這個網站仍然很陌生 – ChartzAttack

回答

0

這種規模數據的我會鼓勵你看看PowerQuery,其中包含在Excel 2016年可以作爲一個插件,因爲Excel 2010中

First Table called "Invoices", Second called "Details"

添加兩個表電源查詢(Excel的2016年 「數據」 絲帶 - > 「獲取&變換」 部分 - > 「從表」 或 「新查詢」 - > 「從工作簿」)

And then in Power Query Editor use "Merge Queries":

選擇您希望添加到表中的列

然後單擊「保存並加載到」並選擇合併表的目標。

這是非常高效的,通過單擊「全部刷新」將使新表保持同步。

P.S.我會發布更多的照片,但不要有「信譽」

最佳

弗洛裏安

相關問題