总和值取决于标题标题

时间:2015-04-14 01:40:53

标签: excel-vba excel-formula vba excel

我需要以下方面的帮助:

我在A:E上创建了一个表格,其中列标题来自A1:E1标题是名称,每个名称下都有数字,例如Carlos是标题标题位于A1,在他下面有数字,如2细胞A5上的细胞A2 3上的细胞A5

在Sheet2上我有例如G4:G8的名字,我想知道根据名称的数字总和,例如在H4上的Carlos旁边,我应该得到15,这是他的值下的总和Sheet1上的名称

我试过vlookup - 索引 - HLOOKUP - 条件组合vlookp或索引但没有任何作用:(

4 个答案:

答案 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