¿Cómo formular una operación que siempre llame a una hoja anterior?

Hola, tengo un archivo excel con muchas hojas, cada una de estas hojas con nombre de trimestre anual, es decir, tengo las hojas 1211, 0911, 0611, 0311, 1210... Y asi sucesivamente. Todas estas hojas tienen la misma base de datos en que solo varia la información de las celdas pero todas las ubicaciones de las mismas y el formato esta igual.

Lo que necesito hacer es automatizar una operación simple la cual llama a un dato de la celda anterior con tal de poder copiarla y pegarla en todas las hojas.

Ejemplo: en la hoja 1211 al dato de la celda A1 necesito restarle el dato de la celda A1 de la hoja siguiente, es decir la celda A1 de la hoja 0911 por lo que la formula simple me quedaría asi =A1-'0911'!A1

Mi problema es que después tengo que hacer lo mismo para la celda A1 en la hoja 0911, es decir que le reste el dato de la hoja 0611 pero si copio y pego la formula se mantiene que me reste siempre el dato de la hoja 0911 y yo necesito que sea siempre el dato de la hoja siguiente.

Podría hacerlo mecánicamente pero son como mil hojas y estaría hasta mañana en eso.

1 Respuesta

Respuesta
1

Te mando la solución. Ejecuta esta macro y todo listo:

Sub lmd()
'macro creada por Luis Mondelo
On Error Resume Next
For Each hoja In ActiveWorkbook.Sheets
hoja.Select
Range("a1").Value = Range("a1").Value - ActiveSheet.Next.Range("a1").Value
Next
End Sub

Recuerda finalizar y puntuar

Gracias, te puedo molestar con una aclaración? esta macro como la paso a mi excel? y como la adapto para mi archivo, es decir, por lo que veo claramente le tengo que cambiar algunos valores ya que lo de la celda A1 lo mencione como ejemplo (en realidad tengo un rango de celdas).

Si entiendo bien esta macro lo que va a hacer es activar todas las hojas en el archivo y a la celda A1 le va a restar la celda A1 de la hoja siguiente o no?

Saludos!

Esta macro tienes que copiarla a un módulo de visual basic. Desde excel pulsa ALT F11 y en la pantalla que aparece pulsa en insertar----modulo. En la pantalla blanca de la derecha copia la macro y listo.

Como en tu caso son mas celdas tendrás que añadir tantas líneas como necesites, te pongo un ejemplo:

Ejemplo:

...

...

Range("a1").Value = Range("a1").Value - ActiveSheet.Next.Range("a1").Value

Range("b1").Value = Range("b1").Value - ActiveSheet.Next.Range("b1").Value

Range("b15").Value = Range("b15").Value - ActiveSheet.Next.Range("b15").Value

...

...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas