Sumar datos de varias hojas

Necesito una formula que me permita sumar datos de varias hojas pero de diferentes celdas. Me explico: en la primera columna de cada hoja tengo nombres de personas que no siempre son los mismos para cada hoja. En la segunda columna tengo un valor numérico; cada hora representa un día del mes; lo que quiero es totalizar en la hoja 31 la suma total que le corresponde a cada nombre de persona de los valores que hay en la columna 2 de cada hoja.

3 Respuestas

Respuesta
1

Espero que esto te sirva.

No se cuantas hojas tengas, pero te la demostrare con 3 hojas

Hoja 1 (tu resumen) columna A nombres

Hoja 2 (datos) columna A nombres, columna B numeros

Hoja 3 (datos) columna A nombres, columna B numeros

Empezamos con la hoja de resumen

En "celda a2" tenemos a juan y en "celda b2" pondremos la siguiente formula:

=sumar.si.conjunto(Hoja2!b:b,Hoja2!a:a,Hoja1a:a)

Hoja2!b:b, (esta es la hoja y columna que nos sumaria.)

Hoja2!a:a, (compararia lo que tenemos en esta columna vs hoja1!a:a)

Con esto te sumaria los valores de acuerdo con el nombre.

Ahora yo haria lo siguiente:

=suma(sumar.si.conjunto(Hoja2!b:b,Hoja2!a:a,Hoja1a:a),sumar.si.conjunto(Hoja3!b:b,Hoja3!a:a,Hoja1a:a))

Me daria la suma de los datos de las 2 hojas comparando con la hoja1 "el nombre"

Espero te ayude, si no es lo que buscabas o tienes alguna duda estoy a tus ordenes.

Luis G. DosisLife

esta muy buena tu formula y funciona pero lo que pasa es que tengo 30 hojas y la formula me queda muy larga, ¿no hay manera de agruparla o que quede mas corta?

Respuesta
1

Este sería el proyecto que te he diseñado: voy a suponer que tienes un total de 31 hojas etiquetadas con el número de día de mes y que tenemos una hoja llamada "resumen" en la que vamos a totalizar las sumas por cada nombre. Esta macro lo consigue:

En mi ejemplo los datos empiezan en la celda A1 de todas las hojas y en la hoja resumen los nombres también empiezan en la celda A1. Todo esto se puede adaptar.

Sub acumular_suma()

Sheets("resumen").Select

Range("a1").Select

Do While ActiveCell.Value <> ""

valor = ActiveCell.Value

For m = 1 To Sheets.Count

If Sheets(m).Name <> "resumen" Then

Set busca = Sheets(m).Range("a1:a1000").Find(valor, LookIn:=xlValues, lookat:=xlWhole)

If Not busca Is Nothing Then

Total = Total + busca.Offset(0, 1)

End If

End If

Next

ActiveCell.Offset(0, 1).Value = Total

busca = ""

Total = 0

ActiveCell.Offset(1, 0).Select

Loop
End Sub

Recuerda finalizar y puntuar

Respuesta

Estoy de acuerdo con Luis G, pero la fórmula se puede resumir asignando nombre al grupo de hojas en el administrador de nombre pestaña fórmula ejemplo

Nombre: base

={"Hoja1";"Hoja2";"Hoja3"}={"Hoja1";"Hoja2";"Hoja3"}

y luego usas el suma(sumar.si.conjunto(    pero de forma matricial

{=SUMA(SUMAR.SI(INDIRECTO(MisHojas & "!A:A");A1;INDIRECTO(MisHojas &"!B:B")))=SUMA(SUMAR.SI(INDIRECTO(MisHojas & "!A:A");A1;INDIRECTO(MisHojas &"!B:B")))}

y te da lo que quieres 

ojo los "{ }" al inicio y al final no se colocan según el teclado sino que la formula va desde el "=" hasta el último ")" para que se coloque las "{}" debes presionar Ctrl+Shif+Enter

Perdón el nombre a asignar es MisHojas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas