Excel使用sumifs或其他公式来计算基于列标准

时间:2017-05-26 17:53:16

标签: excel sumifs

我正在尝试编写一个excel公式,该公式将根据区域的列标题计算数据集。从本质上讲,我正在使用它来帮助自动化我所做的一些平凡的对账。

数据:我想在列标题中搜索" Car_ERN"并总结整列。我一直试图找到工作的公式有两个版本。

一个版本正在使用sumifs:

SUMIFS('Sum Payroll Dept Dump'!$Y$2:$CG$85,'Sum Payroll Dept Dump'!$Y$1:$CG$1,"ERN_CAR_AMT")

另一个版本正在整合Sumproduct,但我获得零回报。 " 2"正在搜索其中包含多个2的列,因为我希望所有行都符合此条件。

`SUMPRODUCT('Sum Payroll Dept Dump'!$Y$2:$CG$200,('Sum Payroll Dept Dump'!$Y$1:$CG$1='Filter Sheet'!A8)*('Sum Payroll Dept Dump'!A2:A200="2"))`

如果有更好的方法可以在没有宏的情况下做到这一点。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

仅限公式解决方案,假设您要查找的所需列标题位于工作表'过滤表'单元格A8(使用您的示例,该单元格将包含" ERN_CAR_AMT"):

=SUMIF('Sum Payroll Dept Dump'!$A:$A,2,INDEX('Sum Payroll Dept Dump'!$Y:$CG,0,MATCH('Filter Sheet'!A8,'Sum Payroll Dept Dump'!$Y$1:$CG$1,0)))

答案 1 :(得分:0)

您可以在VBA中创建用户定义的函数(UDF)。

function sumByHeader(header as string, headerRng as range) as Double
Dim hdr as Range
Dim i as Long
Dim thisSum as Double
for each hdr in headerRng
    if hdr.value = header then
        thisSum = 0
        for i=2 to ActiveSheet.UsedRange.Rows.Count
            thisSum = thisSum + cells(i, hdr.Column)
        next i
    end if
next i
sumByHeader = thisSum
End Function

此函数循环遍历标题行(headerRng)并查找特定标题(标题)。当它找到它时,它会在它所在的列中对它下面的单元格求和,从第2行开始并到达所用范围的最后一个单元格的末尾。

然后在工作表的单元格中,您可以像使用任何其他

一样使用该功能
=sumByHeader("Car_ERN", A1:Z1)