快生活 - 生活常识大全

根据订单号跨多工作表查


  一起来学office,提高办公技能
  问题情境
  Excel跨多个工作表查询数据,用公式不好统计,尤其是遇到不断增加工作表的情况,比如:
  上图中,要根据订货单号选择相应的货名、数量、单位、单价等信息。而这些订货单号对应货名等分布在不同的9个工作表中,而且工作表还在不断增加。
  在这种情况下,公式显得有些苍白无力,就需要用VBA来完成跨表查询。
  实现效果如下:
  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
  如下图:
  如果不知道"按订货单号查询"按钮怎么设置,可参考文章Excel | 让"宏"来替你做重复动作
  -----------------------------------
网站目录投稿:傲萱