У меня разные таблицы на разных листах Excel, и во всех таблицах существует ключевое значение (идентификатор сотрудника), мне нужно суммировать элементы на разных листах на основе идентификатора сотрудника

Sheet 1                       Sheet 2

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

Мне нужно 100+500 на основе, так как это тот же ID сотрудника 1

2 ответа2

0

То, что вы хотите, это функция sumif . SUMIF(Range, Criteris, [sum range])

Формула может выглядеть так:=SUMIF(Sheet2!A3:B5,Sheet1!A3,Sheet2!B3:B5)+B3

0

Как говорит pat2015, есть несколько вопросов, на которые нужно ответить, прежде чем дать правильный ответ.

Если идентификаторы не повторяются, и вы просто хотите отобразить сумму в ячейке, вы можете сделать простой vlookup для каждой таблицы. Допустим, вы поместили идентификатор, который хотите найти, в ячейку A1, а затем добавили следующее, где вы хотите, чтобы сумма отображалась:

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

И полный для каждой таблицы.

Sheet1!Table1

Не нужно использовать, так как Excel все равно найдет таблицу. Но понадобится для абсолютной справки.

Если у вас есть несколько записей одного и того же идентификатора в одной таблице, они будут пропущены. Если вы хотите их поймать, я бы предложил вместо этого использовать VBA. Если это работает для вас.

редактировать

Если у вас есть или может быть несколько записей одного и того же идентификатора в одной таблице, предлагаемый sumif работает хорошо. Два примера для трех таблиц.

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

или просто сложите вместе

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

Вы можете использовать всю таблицу как диапазон, но лучше указать, какой столбец вы хотите искать. Если у вас есть несколько столбцов, а искомое значение присутствует и в других столбцах, могут быть некоторые странные результаты.

Новое комбинированное решение с вашим примером.

Я использовал макрос для сбора всех идентификаторов, а затем заполнил таблицу в таблице результатов. Код выглядит так:

    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

Чтобы изменения в коде адаптировались к документу, отредактируйте имена рабочих листов, чтобы они соответствовали изменениям, и отредактируйте массивы, чтобы они соответствовали столбцу, содержащему идентификаторы.
Пожалуйста, не помещайте никаких других чисел в эти столбцы, так как код выберет их в качестве идентификатора.

Затем в таблице результатов столбец значения содержит код:

=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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .