库存查询
1 技术场景
复杂查询,需要从多张表中查询数据。
2 功能描述
点击查询按钮,查询当前各商品当前的入库数量、出库数量、库存数量 以及库存金额。
商品编号、商品名称与进价 :信息来源为[A02商品]表中的所有商品的编号、名称、进价;
入库数:信息来源于[A0502入库明细]:针对每种商品进行入库数量求和;
出库数:信息来源于[A0602出库明细]:针对每种商品进行出库数量求和;
库存金额=库存数*进价。
3 主要步骤
步骤1:清除已有数据
步骤2:遍历数据存储表[A02商品]表
步骤2-1:设置商品基本信息
步骤2-2:通过公式从入库明细与出库明细中统计入库数与出库数
步骤2-3:计算库存数与库存金额
4 完整代码
Sub query()
Dim id As String
Dim i As Integer
Dim rowIndexLast As Integer
Dim flag As Boolean
flag = False
'步骤1:清除已有数据
If Not IsEmpty(Worksheets("B07库存查询").Range("B8").Value) Then
rowIndexLast = Worksheets("B07库存查询").Range("B7").End(xlDown).Row
Worksheets("B07库存查询").Rows("8:" & rowIndexLast).EntireRow.delete
End If
'步骤2:遍历数据存储表[A02商品]表
rowIndexNew = 8
For i = 2 To Worksheets("A02商品").Range("A1").End(xlDown).Row
id = Worksheets("A02商品").Range("A" & i).Value
'步骤2-1:设置商品基本信息
'设置商品编号
Worksheets("B07库存查询").Range("B" & rowIndexNew).Value = id
'设置商品名称
Worksheets("B07库存查询").Range("C" & rowIndexNew).Value = _
Worksheets("A02商品").Range("B" & i).Value
'设置商品进价
Worksheets("B07库存查询").Range("G" & rowIndexNew).Value = _
Worksheets("A02商品").Range("E" & i).Value
'步骤2-2:通过公式从入库明细与出库明细中统计入库数与出库数
'通过公式计算入库数量总和(从[A0502入库明细]表中)
Worksheets("B07库存查询").Range("D" & rowIndexNew).Value = _
Application.WorksheetFunction.SumIf( _
Worksheets("A0502入库明细").Range("G:G"), id, Worksheets("A0502入库明细").Range("O:O"))
'通过公式计算出库数量总和(从[A0602出库明细]表中)
Worksheets("B07库存查询").Range("E" & rowIndexNew).Value = _
Application.WorksheetFunction.SumIf( _
Worksheets("A0602出库明细").Range("G:G"), id, Worksheets("A0602出库明细").Range("O:O"))
'步骤2-3:计算库存数与库存金额
'计算库存数量总和
Worksheets("B07库存查询").Range("F" & rowIndexNew).Value = _
Worksheets("B07库存查询").Range("D" & rowIndexNew).Value - _
Worksheets("B07库存查询").Range("E" & rowIndexNew).Value
'计算库存金额
Worksheets("B07库存查询").Range("H" & rowIndexNew).Value = _
Worksheets("B07库存查询").Range("F" & rowIndexNew).Value * _
Worksheets("B07库存查询").Range("G" & rowIndexNew).Value
rowIndexNew = rowIndexNew + 1
Next
MsgBox "查询完成", Title:="小步教程www.xiaobuteach.com"
End Sub
5 代码讲解
Application.WorksheetFunction:用于执行Excel函数。
区别WorksheetFunction函数计算与Formular公式设置
WorksheetFunction:执行完成后,会得到一个值;当函数所引用的单元格变化,不会引起执行结果的变化。
Formular设置公式:当函数所引用的单元格变化时,此单元格的值会变化。
根据需求选择使用,这里我们需要的固定值,所以使用WorksheetFunction。
6 测试用例
正常用例:点击查询按钮,显示查询结果。
异常用例:无。