【发布时间】:2017-08-10 09:18:14
【问题描述】:
我有 2 个工作簿 A 和 B。
工作簿 A 是客户发票列表(5000 行)。客户 ID 位于 A 列。 工作簿 B 是客户详细信息,包括 15000 行和 100 列。客户 ID 位于 B 列。
使用客户 ID,我尝试将工作簿 B 中的 D、E、G、O、AA、AD、AF、BD、CA 列(客户地址、电话、电子邮件)中的数据复制到工作簿 A 列 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
我已经在网站上搜索了一天,我似乎无法得到我想要的东西。如果有人能指出我正确的方向,我会很高兴
请帮忙。谢谢
【问题讨论】:
-
请编辑您的问题以显示您尝试过的代码。
-
嗨 YowE3K。谢谢提醒。我已经添加了代码。我很抱歉我对 vba 和这个网站还是很陌生