我需要以下方面的帮助:
我在A:E上创建了一个表格,其中列标题来自A1:E1标题是名称,每个名称下都有数字,例如Carlos是标题标题位于A1,在他下面有数字,如2细胞A5上的细胞A2 3上的细胞A5
在Sheet2上我有例如G4:G8的名字,我想知道根据名称的数字总和,例如在H4上的Carlos旁边,我应该得到15,这是他的值下的总和Sheet1上的名称
我试过vlookup - 索引 - HLOOKUP - 条件组合vlookp或索引但没有任何作用:(
答案 0 :(得分:1)
也许这个:
=SUM(INDEX(Sheet1!$A$2:$E$6,1,MATCH(G4,Sheet1!$A$1:$E$1)):INDEX(Sheet1!$A$2:$E$6,4,MATCH(G4,Sheet1!$A$1:$E$1)))
请注意,第二个INDEX()中的行索引4以及INDEX()的第一个参数中的数组必须根据您期望的最大数量进行更改
答案 1 :(得分:0)
我假设"表"你的意思是一个实际命名的表。在这种情况下,您可以利用此功能并使用如下公式:
=SUM(INDEX(Table1, , MATCH(G4,Table1[#Headers],0)))
就我而言,我的表名为Table1,因为它是默认名称。
此公式的工作原理是在Table1[#Headers]
中搜索单元格G4
中的名称。然后,它使用该列索引使用INDEX
返回整个列。请注意,rownum
有一个空的INDEX
参数,因此它返回整列。从那里它需要此列的SUM
。
答案 2 :(得分:0)
如果您更喜欢将VBA解决方案用于工作表函数,则可以使用:
Public Function SumByColumnHeader(name As String, target As String) As Variant
Application.Volatile
Dim sheet As Worksheet
Set sheet = Application.Caller.Worksheet.Parent.Worksheets(target)
Dim col As Long
For col = 1 To sheet.UsedRange.Columns.Count
If sheet.Cells(1, col) = name Then
Exit For
End If
Next col
Dim result As Integer
If col > 0 Then
Dim row As Long
For row = 2 To sheet.UsedRange.Rows.Count
result = result + Val(sheet.Cells(row, col))
Next row
SumByColumnHeader = result
End If
End Function
在你的牢房里(比如H4中的Carlos):
=SumByColumnHeader(H4, "Sheet1"
)
答案 3 :(得分:0)
一种很好的方法是使用数组公式。在单元格H4中插入公式:
=SUM((Sheet1!$A$1:$E$1=G4)*Sheet1!$A$2:$E$30)
然后,按Ctrl + Shift + Enter键,而不是按Enter键。您将在公式栏中看到的内容将是:
{=SUM((Sheet1!$A$1:$E$1=G4)*Sheet1!$A$2:$E$30)}
您可以将生成的公式粘贴到下面的单元格中,与普通公式一样。 我假设您的数据在第30行结束,但当然您可以更改此信息。 使用数组公式可以执行许多有趣的事情。看看这里开始:http://www.cpearson.com/excel/arrayformulas.aspx