Leer datos de indeterminadas hojas

22/08/2012 - 15:25 por maidanas | Informe spam
¡ Hola !

Quiero crear una hoja resumen de multiples, en un libro de Excel.

Por ejemplo, escribo en la celda A1 de cada hoja una cantidad, y quiero que al final del libro se acumule la suma de todas las celdas A1 en una hoja. Pero que si por algun motivo añado con posterioridad una hoja nueva, dicha hoja sea tenida en cuenta para el calculo.

Gracias de antemano

Preguntas similare

Leer las respuestas

#1 Juan Español
22/08/2012 - 19:17 | Informe spam
Hola maidanas:
Hay un dato inconcreto en tu pregunta,
¿Que es eso de "al final del libro"?

Para tu caso hay dos soluciones:
1ª Que el resumen se "calcule" en la primera hoja del libro
En este caso, si añades un botón a la PRIMERA hoja del libro con este código

Dim n As Integer, suma As Double
For n = 2 To Worksheets.Count
suma = suma + Sheets(n).Range("A1").Value
Next
Worksheets(1).Activate
[A1] = suma


en la celda A1 de la primera hoja del libro, tendrás el valor de la suma de
las restantes celdas A1 del libro.

2ª Solución..
Crear una hoja con un nombre específico por ejemplo RESUMEN (la puedes
situar en cualquier lugar del libro)
y si pones en esta hoja con el nombre RESUMEN un botón con este código..


Dim suma As Double
Dim Hoja As Worksheet
Dim Nom_Hoj As String
For Each Hoja In Sheets
Nom_Hoj = Hoja.Name
If Nom_Hoj = "RESUMEN" Then GoTo 20
suma = suma + Sheets(Nom_Hoj).Range("A1").Value
20:
Next
Sheets("RESUMEN").Range("A1").Value = suma


Al pulsar en el botón te hará lo que tú quieres.
Es obvio pero lo escribo, las dos soluciones tal como estás escritas son
incompatibles entre si.

Saludos.-


"maidanas" escribió en el mensaje de
noticias news:
¡ Hola !

Quiero crear una hoja resumen de multiples, en un libro de Excel.

Por ejemplo, escribo en la celda A1 de cada hoja una cantidad, y quiero
que al
final del libro se acumule la suma de todas las celdas A1 en una hoja.
Pero que
si por algun motivo añado con posterioridad una hoja nueva, dicha hoja
sea tenida en cuenta para el calculo.

Gracias de antemano
Respuesta Responder a este mensaje
#2 Juan Español
22/08/2012 - 19:45 | Informe spam
Cambia este código

Dim n As Integer, suma As Double
For n = 2 To Worksheets.Count
suma = suma + Sheets(n).Range("A1").Value
Next
Worksheets(1).Activate
[A1] = suma

por

Dim n As Integer, suma As Double
For n = 2 To Worksheets.Count
suma = suma + Sheets(n).Range("A1").Value
Next
[A1] = suma

Funciona igual, pero es una solemne tontería poner
Worksheets(1).Activate

Saludos.-
Respuesta Responder a este mensaje
#3 maidanas
23/08/2012 - 13:57 | Informe spam
Juan Español escribió el 22/08/2012 19:45 :
Cambia este código

Dim n As Integer, suma As Double
For n = 2 To Worksheets.Count
suma = suma + Sheets(n).Range("A1").Value
Next
Worksheets(1).Activate
[A1] = suma

por

Dim n As Integer, suma As Double
For n = 2 To Worksheets.Count
suma = suma + Sheets(n).Range("A1").Value
Next
[A1] = suma

Funciona igual, pero es una solemne tontería poner
Worksheets(1).Activate

Saludos.-


Gracias por la pronta respuesta.

No obstante, la solucion me la ha proporcionado la propia formula.

Veamos.

A modo de prueba, utilice la formula habitual =SUMA(Enero:Marzo!A1) en la ultima hoja del libro. Asi, sumaba Las hojas "Enero", "Febrero" y "Marzo". Pero he descubierto que si coloco cualquier hoja fisicamente dentro de ese intervalo (por ejemplo, desplazando "Abril" entre "Enero" y "Febrero"), dicha hoja queda incluida en la suma.
Al igual que cuando en un sumatorio de celdas, si insertas una nueva dentro del rango este se amplia e incluye la nueva celda en el sumatorio. Esta diea me llevo a hacer la prueba mientras que esperaba respuestas.

No obstante, me quedo con el codigo para utilizarlo en otros menesteres.

Gracias de nuevo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida