我在表格中有不同的定义类别(A列),这些类别分布在整个数据表中(F3:I14)。
我想为单元格F3中的每个类别(a,b,c,d,e,f)添加值:I14,它在分配的列(C列)中写在它下面。
例如: 对于类别a,添加单元格F3中的所有数字:I14,它写在单元格C2中的下面。
我尝试了VLOOKUP公式,但它没有用。
答案 0 :(得分:4)
对于公式答案,请使用此数组公式:
=SUM(IF($F$3:$I$14=A2,$F$4:$I$15))
作为数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter来确认。如果操作正确,那么excel会将{}
放在公式周围。
答案 1 :(得分:3)
我赞成Scott Craner的答案,因为我认为这是最好,最干净的解决方案。但是当你用'VBA'标记这个问题时,我想我也会用VBA为它提供纯编程解决方案。如果不出意外的话,它就说明了像斯科特这样的好公式有多么简单!
Sub SumCategories()
Const startColumn As Integer = 6 'F
Const endColumn As Integer = 9 'I
Const startRow As Integer = 3
Const endRow As Integer = 14
Const categoryColumn As Integer = 1 'A
Const assignedColumn As Integer = 3 'C
Dim categoryRow As Integer
categoryRow = 2
Dim categoryTotalAssigned As Integer
categoryTotalAssigned = 0
Dim currentCategory As String
currentCategory = ActiveSheet.Cells(categoryRow, categoryColumn)
While Not currentCategory = ""
'Loop through all data to sum totals
For c = startColumn To endColumn
For r = startRow To endRow Step 2 'Look in every other row
If ActiveSheet.Cells(r, c) = currentCategory Then
categoryTotalAssigned = categoryTotalAssigned + ActiveSheet.Cells(r + 1, c)
End If
Next r
Next c
'Write total for category
ActiveSheet.Cells(categoryRow, assignedColumn) = categoryTotalAssigned
'Move to next row
categoryRow = categoryRow + 1
'Reset total for next category
categoryTotalAssigned = 0
'Get next category
currentCategory = ActiveSheet.Cells(categoryRow, categoryColumn)
Wend
End Sub