映射多行的求和产品

时间:2018-08-23 11:09:35

标签: excel excel-formula

我想写一个excel公式,该公式将基于行的匹配来求和。要匹配的单元格可以多次出现,并根据Mapping图例返回值的总和。

在黄色单元格中,我尝试根据G3:G8中名称的匹配(根据将图例映射到Item1,然后是Item2和Item 3)来计算范围B9:B21中的值之和。 如果要求和的数组与Mapping图例相同,我已经就如何对值求和的答案。但是,现在我的数组要进行扩展求和,并且SUMPRODUCT公式不再起作用:

enter image description here

有解决方案吗?

2 个答案:

答案 0 :(得分:1)

这有待改进,但这是可以在工作表中使用的入门用户定义功能。

功能GetSum

arg1 项目 字符串要与之匹配的项目,例如Item2

arg2 sourceData 范围根据项目求和的数据范围

arg3 查找范围包含映射的数据范围(2列宽)

Public Function GetSum(ByVal item As String, sourceData As Range, lookup As Range) As Variant
    If lookup.Columns.Count <> 2 Then GetSum = CVErr(xlErrNA)

    Dim lookupDict As Object, arr(), arr2(), i As Long, finalValue As Double
    Set lookupDict = CreateObject("Scripting.Dictionary")
    If lookup.Cells.Count = 1 Then
        ReDim arr(1, 1)
        arr(1, 1) = lookup.Value
    Else
        arr = lookup.Value
    End If
    If sourceData.Cells.Count = 1 Then
        ReDim arr2(1, 1)
        arr2(1, 1) = sourceData.Value
    Else
        arr2 = sourceData.Value
    End If

    For i = LBound(arr, 1) To UBound(arr, 1)
        lookupDict(arr(i, 2)) = arr(i, 1)
    Next i

    For i = LBound(arr2, 1) To UBound(arr2, 1)
        If lookupDict.exists(arr2(i, 1)) Then
            If lookupDict(arr2(i, 1)) = item Then
                finalValue = finalValue + arr2(i, 2)
            End If
        End If
    Next i
    GetSum = finalValue
End Function

数据:

答案 1 :(得分:0)

修正公式:

=SUMPRODUCT(--(NOT(ISERROR(MATCH(B11:B20,F6:F9,0)))),C11:C20)

如图片所示(无法更改excel语言,所以):

enter image description here

作为对此未来项目的一般指导,我建议使用它,因为据说使用 helper列来标记您的商品并大大简化公式:

enter image description here