O que você quer é a função sumif
. SUMIF(Range, Criteris, [sum range])
A fórmula poderia ser assim:
=SUMIF(Sheet2!A3:B5,Sheet1!A3,Sheet2!B3:B5)+B3
Eu tenho tabelas diferentes em diferentes planilhas do Excel e existe um valor de chave em todas as tabelas (ID do funcionário), preciso somar elementos em planilhas diferentes com base no ID do funcionário
Sheet 1 Sheet 2
A B A B
ID Value ID Value
1 100 1 500
Eu preciso somar 100 + 500 com base, já que é o mesmo ID 1 de funcionário
Como diz o pat2015, há algumas perguntas que precisam ser respondidas antes que uma resposta apropriada possa ser dada.
Se os IDs não se repetirem e você quiser apenas exibir a soma em uma célula, você pode fazer um simples vlookup
para cada tabela.
Digamos que você coloque o ID que deseja procurar na célula A1 e, em seguida, coloque o seguinte onde deseja que a soma apareça:
=SUM(VLOOKUP(A1,Table1,2,0),VLOOKUP(A1,Table2,2,0))
E completo para todas as tabelas.
Sheet1!Table1
Não precisa ser usado, pois o Excel encontrará a tabela mesmo assim. Mas será necessário para uma referência absoluta.
Se você tiver várias entradas do mesmo ID em uma única tabela, elas serão perdidas.
Se você quiser pegá-los também, sugiro usar o VBA. Se isso funciona para você.
editar
Se você tem, ou pode ter, várias entradas do mesmo ID em uma única tabela, o sumif
sugerido funciona bem.
Dois exemplos para três tabelas.
=SUM(SUMIF(Table1[ID],A1,Table1[Value]),SUMIF(Table2[ID],A1,Table2[Value]),SUMIF(Table3[ID],A1,Table3[Value]))
ou apenas adicione sumifs juntos
=SUMIF(Table1[ID],A1,Table1[Value])+SUMIF(Table2[ID],A1,Table2[Value])+SUMIF(Table3[ID],A1,Table3[Value])
Você pode usar a tabela inteira como intervalo, mas é melhor especificar qual coluna deseja pesquisar. Se você tem várias colunas e o valor que está procurando está presente em outras colunas, pode haver alguns resultados estranhos.
Nova solução combinada com o seu exemplo.
Eu usei uma macro para coletar todos os IDs e depois preencher uma tabela na folha de resultados. O código é assim:
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
Para que as alterações no código se adaptem ao documento, edite os nomes das Planilhas para ajustar as alterações e edite as Matrizes para ajustá-las à coluna contendo os IDs.
Por favor, não coloque nenhum outro número nessas colunas, como o código irá buscá-los como um ID.
Em seguida, na tabela de resultados, a coluna de valor contém o código:
=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])
Esse é um SUMIF
para cada tabela. Certifique-se de que isso esteja contendo os nomes certos para todas as tabelas, ou se você estiver usando intervalos, os intervalos certos, é claro.
Por favor, note!
Minhas configurações de idioma me forçam a usar ponto-e-vírgula (;) é a vírgula das vírgulas (,) na função. Altere isso para ajustar suas configurações.
Aqui está o meu exemplo, espero que atenda às suas necessidades.
link