Inicio > Microsoft Excel > jcgonzalez31 > Sumar datos de varias hojas en una hoja acumulativa

Sumar datos de varias hojas en una hoja acumulativa

Experto:
Usuario:
Fecha: 31/07/2008
Valoración: (4,00 sobre 5) Categoría: Microsoft Excel
25/07/2008
mesaisaac, usuario preguntando en Microsoft Excel
Usuario
Saludo cordial. Recurro nuevamente a tu ayuda para lo siguiente:
Estoy trabajando una macro en Excel que contiene una determinada cantidad de hojas de datos (el numero puede variar) y una hoja llamada Data. Todas tienen la misma estructura, lo que deseo es sumar todos los datos de una celda de cada hoja y que el resultado aparezca en la misma celda de la hoja Data. A pie la formula es algo así: La celda A1 de Data sería =Hoja1!A1+Hoja2!A1+Hoja3!A1... asi sucesivamente para todas las hojas del archivo. La cantidad de hojas del archivo y el nombre de cada una los puedo obtener de una hoja oculta que tiene los nombres de las hojas.
Cual sería el codigo para hacer esto? Puedes darme las indicaciones suponiendo que son unas 3 hojas y yo lo extiendo a las que necesito.
Agradezco de antemano su atención y ayuda.
25/07/2008
mesaisaac, experto respondiendo en Microsoft Excel
Experto
Hola amigo, para eso tendrías que hacer una función Personal. Aquí te hice una que talvez te sirva. Puedes modificar el rango de la celda a sumar.
Function SumarCeldas(cell)
      Dim ValorDato As Double
      Dim Addr As String
      Dim Wksht As Object
      Application.Volatile
      Addr = cell.Range("A1").Address
      For Each Wksht In cell.Parent.Parent.Worksheets
               If Wksht.Name = cell.Parent.Name And _
                             Addr = Application.Caller.Address Then
                             ' Evitar la referencia circular
               Else
                         ValorDato = ValorDato + Wksht.Range(Addr).Value
               End If
      Next Wksht
SumarCeldas = ValorDato
End Function

Esta función la puedes llamar desde cualquier celda de la siguiente forma:
=SumarCeldas(A1)
Y listo, te suma todos los datos que esten en la celda A1 de las hojas. No importa si mueves o eliminas hojas, la función siempre se recalculará.
Espero te sirva, saludos
jcgonzalez3165@univision.com
jcgonzalez3165@gmail.com
31/07/2008
mesaisaac, usuario preguntando en Microsoft Excel
Usuario
Hola, Gracias por tu respuesta.
La verdad no probé la solución que me diste porque finalmente encontré una forma de hacerlo:
For ini = 1 To registros
    Str = "=" & hojas(1) & "!E" & CStr(ini) & ""
    For i = 2 To cantidadHojas
        a = hojas(i)
        Str = Str & "+" & a & "!E" & CStr(ini) & ""
    Next
    Cells(ini, x).Activate
    ActiveCell.FormulaLocal = Str
Next
Donde:
registros: Me dice cuantas lineas debo totalizar
Str: cadena en la que voy guardando la que finalmente será la formula de la celda
hojas: Arreglo en el que tengo guardado el nombre de las hojas que debo sumar
cantidadHojas: Me dice cuantas hojas hay (es la longitud de un arreglo)
a: Me guarda la primera parte de la cadena
Enlaces patrocinados