excelvba如何查询表数据(ExcelVBA--根据订单号跨多工作表查询数据)

问题情景

Excel跨多个工作表查询数据,用公式不好统计,尤其是遇到不断增加工作表的情况,比如:

excelvba如何查询表数据(ExcelVBA--根据订单号跨多工作表查询数据)(1)

上图中,要根据订货单号选择相应的货名、数量、单位、单价等信息。而这些订货单号对应货名等分布在不同的9个工作表中,而且工作表还在不断增加。

在这种情况下,公式显得有些苍白无力,就需要用VBA来完成跨表查询。实现效果如下:

excelvba如何查询表数据(ExcelVBA--根据订单号跨多工作表查询数据)(2)

VBA实现

在代码窗口中输入以下代码:

Sub 多表查询() Dim i%, k% Dim irow%, icol% Dim sht As Worksheet Range("a5:e200").Clear 清除a5到e200区域中的数据,此处200可根据数据行多少改变 k = 1 Application.ScreenUpdating = False For Each sht In Worksheets If sht.Name <> ActiveSheet.Name Then 当工作表不是当前工作时,执行以下语句 With sht irow = .Cells(.Rows.Count, 1).End(xlUp).Row 当前工作表数据行数 icol = .Cells(1, .Columns.Count).End(xlToLeft).Column 当前工作表数据列数 For i = 1 To irow If .Cells(i, 1).Value = Sheets(1).Cells(2, 5).Value Then 当前工作表是第一列i行数据与sheet1工作表E2单元格数值相同时 .Cells(i, 2).Resize(1, icol).Copy Sheets(1).Cells(4 k, 1) 将第i行数据复制到sheet1工作表第4 k行 k = k 1 End If Next i End With End If Next Application.ScreenUpdating = True End Sub

如下图:

excelvba如何查询表数据(ExcelVBA--根据订单号跨多工作表查询数据)(3)

如果不知道“按订货单号查询”按钮怎么设置,可参考文章Excel | 让“宏”来替你做重复动作

------------------------------------------

-----------------------------------------

加入圈子,一起学习office吧!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。