【问题标题】:Calculating weighted averages in queries vba access在查询 vba 访问中计算加权平均值
【发布时间】:2017-08-05 21:19:20
【问题描述】:

我正在开发一个需要评估加权平均成本的数据库 库存按单位实际成本计算。源数据 在一个结合了物品接收/退货历史的查询中, 并按项目 ID 和收货日期对结果进行排序。 所以,我从这个查询中得到的是这样的:


项目#recpt_date qty unit_cost
A1 10/15/2001 100 5.50
A1 09/02/2001 50 6.00 A2 12/02/2001 75      15.00
A2        07/20/2001    20      14.50

现在,我有另一个表格,它告诉我库存中每件商品的手头
总数。

项目编号       TOT_QTY
A1           [ 加权平均成本 ]
A2            [加权平均成本]
那么,这可能与访问中的VBA有关吗? 任何帮助将非常感激!
谢谢。

Public Function SumProduct(Array1 As Variant, Array2 As Variant) As Variant

    Dim lngRowMax As Long
    Dim lngColMax As Long
    Dim i As Long
    Dim j As Long
    Dim var As Variant

    lngRowMax = IIf(UBound(Array1, 2) <= UBound(Array2, 2), UBound(Array1, 2), UBound(Array2, 2))
    lngColMax = IIf(UBound(Array1) <= UBound(Array2), UBound(Array1), UBound(Array2))
    ReDim var(0 To lngRowMax)
    For i = 0 To lngRowMax
        For j = 0 To lngColMax
            var(i) = var(i) + Array1(j, i) * Array2(j, i)
        Next j
        SumProduct = SumProduct + var(i)
    Next i

End Function

【问题讨论】:

  • 我尝试使用 SumProduct:
  • 什么是 SumProduct?
  • vba 代码中的一个函数

标签: javascript sql ms-access vba


【解决方案1】:

公共函数 SumProduct(Array1 As Variant, Array2 As Variant) As Variant

Dim lngRowMax As Long
Dim lngColMax As Long
Dim i As Long
Dim j As Long
Dim var As Variant

lngRowMax = IIf(UBound(Array1, 2) <= UBound(Array2, 2), UBound(Array1, 2), UBound(Array2, 2))
lngColMax = IIf(UBound(Array1) <= UBound(Array2), UBound(Array1), UBound(Array2))
ReDim var(0 To lngRowMax)
For i = 0 To lngRowMax
    For j = 0 To lngColMax
        var(i) = var(i) + Array1(j, i) * Array2(j, i)
    Next j
    SumProduct = SumProduct + var(i)
Next i

结束函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2021-11-21
    • 2017-04-22
    • 1970-01-01
    • 2019-08-02
    • 2021-11-24
    • 2017-08-06
    相关资源
    最近更新 更多