分享

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

 L罗乐 2018-07-05

在工作中经常会用到一种批量查询的情况,这种情况比较复杂,就是查询需要在不同的工作表中进行,这种情况是如何快速查到结果呢?在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 FJXIs 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”中查询;

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

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

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

包括:

1 建立宏模块

2VBA编译器中拷贝代码

3 建立按钮连接宏

4查询演示


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多