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)))
我正在尝试编写一个 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)))