Excel 使用 sumifs 或其他公式根据列条件进行计算

Excel using sumifs or another formula to calculate based off of column criteria

我正在尝试编写一个 excel 公式,该公式将根据区域的 header 列计算数据集。从本质上讲,我正在使用它来帮助自动执行我所做的一些平凡的协调工作。

数据:我想在 header 列中搜索 "Car_ERN" 并对整个列求和。我一直在努力工作的公式有两个版本。

一个版本正在使用 sumifs:

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

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

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

如果有更好的不用宏的方法,我们将不胜感激。

感谢您的帮助!

您可以在 VBA 中创建一个 user-defined 函数 (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

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

然后在工作表的一个单元格中,您可以像使用任何其他函数一样使用该函数

=sumByHeader("Car_ERN", A1:Z1)

仅公式解决方案,假设您要查找的所需列 header 在 sheet 'Filter Sheet' 单元格 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:$CG,0)))