需要根据 ID 求和

需要根据 ID 求和

我在不同的 Excel 表中有不同的表,并且所有表中都存在一个键值(员工 ID),我需要根据员工 ID 对不同表中的元素求和

Sheet 1                       Sheet 2

A   B                          A    B             
ID  Value                      ID   Value
1    100                       1    500

我需要对 100+500 进行求和,因为它是同一个员工 ID 1

答案1

你想要的是sumif功能。SUMIF(Range, Criteris, [sum range])

该公式可能如下所示: =SUMIF(Sheet2!A3:B5,Sheet1!A3,Sheet2!B3:B5)+B3

在此处输入图片描述

答案2

正如 pat2015 所说,在给出正确答案之前需要回答几个问题。

如果 ID 不重复,而您只想在单元格中显示总和,则可以vlookup对每个表执行一个简单的操作。假设您将要查找的 ID 放在单元格 A1 中,然后在要显示总和的位置放置以下内容:

=SUM(VLOOKUP(A1,Table1,2,0),VLOOKUP(A1,Table2,2,0))

并为每张桌子配备齐全。

Sheet1!Table1

不必使用,因为 Excel 无论如何都会找到该表。但绝对引用需要它。

如果单个表中有多个相同 ID 的条目,它们将被遗漏。 如果您也想捕获它们,我建议改用 VBA。如果这对您有用的话。

编辑

如果您在单个表中有或可能有多个相同 ID 的条目,则建议的方法sumif很有效。三个表的两个示例。

=SUM(SUMIF(Table1[ID],A1,Table1[Value]),SUMIF(Table2[ID],A1,Table2[Value]),SUMIF(Table3[ID],A1,Table3[Value]))

或者直接将 sumifs 相加

=SUMIF(Table1[ID],A1,Table1[Value])+SUMIF(Table2[ID],A1,Table2[Value])+SUMIF(Table3[ID],A1,Table3[Value])

您可以使用整个表作为范围,但最好指定要搜索的列。如果您有多个列,并且您要搜索的值也存在于其他列中,则可能会出现一些奇怪的结果。

与您的示例相结合的新解决方案。

我使用宏来收集所有 ID,然后在结果表中填充表格。代码如下所示:

    Sub CollectIDs()
    Dim i As Integer
    Dim K As Long, ar
    K = 1
    For Each ar In Array("A", "G", "K")
        For i = 1 To 10000
            If Worksheets("Building-1").Cells(i, ar).Value <> "" Then
                If IsNumeric(Worksheets("Building-1").Cells(i, ar).Value) Then
                    Worksheets("Result").Cells(K + 1, "A").Value = Worksheets("Building-1").Cells(i, ar).Value
                    K = K + 1
                End If
            End If
        Next i
    Next ar

    For Each ar In Array("A", "I")
        For i = 1 To 10000
            If Worksheets("Building-2").Cells(i, ar).Value <> "" Then
                If IsNumeric(Worksheets("Building-2").Cells(i, ar).Value) Then
                    Worksheets("Result").Cells(K + 1, "A").Value = Worksheets("Building-2").Cells(i, ar).Value
                    K = K + 1
                End If
            End If
        Next i
    Next ar
    Worksheets("Result").Range("Table1").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
End Sub

为了使代码更改适应文档,请编辑工作表名称以适应更改,并编辑数组以适合包含 ID 的列。
请不要在这些列中输入任何其他数字,因为代码会将它们作为 ID。

然后,在结果表中,值列包含代码:

=SUMIF(Table2[ID];A2;Table2[Value]) + SUMIF(Table3[ID];A2;Table3[Value]) + SUMIF(Table4[ID];A2;Table4[Value])+ SUMIF(Table5[ID];A2;Table5[Value]) + SUMIF(Table6[ID];A2;Table6[Value])

SUMIF每张桌子 都有一个。确保它包含所有表的正确名称,或者如果您使用范围,那么当然包含正确的范围。

请注意!

我的语言设置强制我在函数中使用分号 (;) 而不是逗号 (,)。请更改此设置以适合您的设置。

这是我的例子,希望它适合您的需要。

https://drive.google.com/open?id=0B_8icTMsheWfcXpwc0NLOGJvdmc

相关内容