充分利用VBA,一键完成在多个EXCEL工作表中的批量大数据查询

在工作中经常会用到一种批量查询的情况,这种情况比较复杂,就是查询需要在不同的工作表中进行,这种情况是如何快速查到结果呢?在GO语言中有个函数RANGE(),可以遍历数组,切片,MAP,那么如何在EXCEL中实现此功能呢?是否有种方法可以在多个工作表中查询数据呢?有办法的,利用VBA.可以使这类的批量查询迎刃而解。

首先上代码:(拷贝时要去掉前面的行号,此行号是位后面的解释代码方便而设置的)。

1 Sub KK()

2 Sheets("SHEET1").Select

3 I = 2

4 Do While Cells(I, 1) ""

5 Cells(I, 1).Select

6 TT = Cells(I, 1)

7 Cells(I, 2) = ""

8

9 Set FJX = Sheets("A").Range("A1:A" & Sheets("A").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)

10 If Not FJX Is Nothing Then Cells(I, 2) = Sheets("A").Cells(FJX.Row, 2)

11

12 Set FJX = Sheets("B").Range("A1:A" & Sheets("A").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)

13 If Not FJX Is Nothing Then Cells(I, 2) = Sheets("B").Cells(FJX.Row, 2)

14

15 Set FJX = Sheets("C").Range("A1:A" & Sheets("C").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)

16 If Not FJX Is Nothing Then Cells(I, 2) = Sheets("C").Cells(FJX.Row, 2)

17

18 Set FJX = Sheets("D").Range("A1:A" & Sheets("D").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)

19 If Not FJX Is Nothing Then Cells(I, 2) = Sheets("D").Cells(FJX.Row, 2)

20 I = I + 1

21 Set FJX = Nothing

22 Loop

23 End Sub

代码的截屏:

代码

代码的解释:

首先用到一个DO WHILE循环,将批量查询的数据的值一个一个的赋给“TT”(第6行).

在9行首先在工作表“A”中查询;注意此处用到之前文章中发表的《VBA 实战技巧篇:如何对不固定的连续区域进行选择》,不清楚的朋友请参考.

如果没有查到则在第12行,实现在工作表“B”中查询;

如果还没有则在15行,实现在工作表“C”中查询;

还没有则在18行,实现在工作表“D”中查询。当查询到结果后,会把对应的值写道工作表sheet1的“B”列。上述就实现了批量数据的多工作表查询方法。

下面就视频演示一下此方法:

包括:

1 建立宏模块

2在VBA编译器中拷贝代码

3 建立按钮连接宏

4查询演示

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180420A1YA8800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券