¿Cómo realizar una macro para sumar celdas de un libro, y el resultado aparezca en otro libro?

Otra vez amigos, buenos días, planteare otro problema el cual necesito solución, tengo 2 libros, los cuales he llamado "libro1 amarillo" y "libro2 azul". El libro amarillo, consta de 3 tablas, las cuales muestran el consumo semana a semana de un producto de aditiivación, y el libro azul, muestra el consumo resumido de esas 3 tablas (libro amarillo), necesito una macro en el libro amarillo, que sume la columna E8:E43 en la hoja1, mas la columna F8:F43 en la hoja2, mas la columna F8:F43 en la hoja3, y que el resultado aparezca en el libro azul en las columna D12:D47 en la hoja1, y que posteriormente al modificar los datos en las hojas del libro amarillo, obviamente cambie el resultado en libro azul, ya que son datos variables.

1 respuesta

Respuesta
1

Para esto no necesitas una macro sino solo fórmulas

Mantené los 2 libros abiertos.

En la celda donde quieras la suma escribí = y a continuación pasá al otro libro y seleccioná el rango a sumar... así con todos los rangos hasta finalizar y dar Enter.

Verás la fórmula correctamente escrita

Sdos. Si necesitas algún ajuste escribime nuevamente.

se que de primera instancia es necesario usar formulas, solamente que en este caso es la excepción por que es un proyecto empresarial, y desafortunadamente, me piden que lo haga a base de macros, no quieren formulas, se los he comentado, pero, me la complican mas, si conoces de alguna macro para automatizar la base de datos que te menciono, seria de gran ayuda.

saludos. y sigue pasando buena tarde.

Generalmente es al revés ... solo quieren fórmulas ;)

Esta macro, que la colocarás en un módulo del Editor del libro Amarillo, hace la suma tal como la planteaste.

Podes asignarla a un botón o a un atajo de teclado para ejecutarla.

Tiene un control por si el libro Azul no está abierto, en ese caso te enviará un mensaje de error.

Sub acumula_Azul()
'x Elsamatilde
On Error GoTo sinlibro
For i = 8 To 43
tot1 = Sheets("Hoja1").Cells(i, 5) + Sheets("Hoja2").Cells(i, 6) + Sheets("Hoja3").Cells(i, 6)
Workbooks("Libro Azul.xls").Sheets("Hoja1").Cells(i + 4, 4) = tot1
Next i
Exit Sub
sinlibro:
MsgBox "El libro Azul no está abierto, el proceso se cancela", , "ERROR"
End Sub

Para hacerlo con cada cambio en los rangos de las 3 hojas, necesitas estas instrucciones en el objeto HOJA , por ejemplo para la Hoja 1 sería:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'solo se controlan los cambios en rango E8:E43 para esta hoja
If Intersect(Target, ActiveSheet.Range("E8:E43")) Is Nothing Then Exit Sub
'se llama a la subrutina
Call acumula_Azul
End Sub

Para la hoja2 y hoja3 tenés que ajustar los rangos a F8:F43 .

Si todo quedó claro y resuelto no olvides finalizar la consulta

muchas gracias Elsa, dejame ver nada mas como es que queda, y en cuanto aparezca te sigo informando, otra pregunta, es unicamente para poder incrementar mas mi conocimiento ¿conoces algún manual, algún libro o algo por el estilo en donde yo pueda aplicar y aprender mas a fondo sobre macros, al igual un listado de códigos para poder hacer mas efluente la sintaxis?

¿puedo ocupar los códigos que utilizo en c++, para realizar la sintaxis, o definitivamente el lenguaje es diferente, y los códigos de C++ no compatibilizan con los de VBA?

Espero me informes Elsa, de nuevo muchas gracias.

Otra cosa, va a decir que soy muy tonto, la primer macro que me recomendaste, la coloco en un modulo en libro amarillo, y noto que la instrucción es que el libro azul ¿debe de estar cerrado para que la macro ejecute la suma?, por mas que trato de analizar la macro, no entiendo el por que de la instrucción, ¿que es lo que debo de hacer?, disculpame x fa x tantas preguntas..

de nuevo yo elsa, en la segunda macro, donde me sugieres colocarla en el objeto de hoja, igualmente en el libro amarillo, no ejecuta ninguna acción, no se si es necesario colocar el código directamente a el primer modulo, (donde ya se encuentra la primer macro) para que asi pueda correr correctamente, lo que hice fue colocar el código hoja por hoja, es decir, hoja1, hoja2, hoja3. con su respectivo código, por fa sígueme ayudando elsa, ya que tus sugerencias son realmente lo que necesito!!!!!

Voy por partes:

Para Macros te invito a visitar mi sitio (no necesitas registrarte) y recorrer la sección Macros, Descargas (ejemplos de descarga gratuita) y Manuales: todo lo que necesitas saber sobre VBA está allí.

Excel trabaja con VBA (Visual Basic for Applications), es un lenguaje de programación similar al Visual Basic pero aplicado a Excel. No es lo mismo que C,

Ahora pasemos al libro AMARILLO. Todas las rutinas van en este libro.

La primera, Sub Acumula_Azul vá en un módulo del libro AMARILLO. Podés ejecutarla desde allí mismo o insertar en alguna hoja un botón y asociarla (hay explicaciones en mi sitio, sección Macros.)

Si al ejecutarla, el libro AZUL no está abierto te indicará en un mensaje el error.

Si al ejecutarla, el libro AZUL sí está abierto, allí aparecerá el resultado, en el rango de la col D que me indicaste.

Ahora, si además colocás las subrutinas en CADA HOJA DEL LIBRO AMARILLO, cada vez que ingreses UN CAMBIO en alguna celda de los 3 rangos (de las 3 hojas), se verá el resultado reflejado en libro AZUL.

El CAMBIO se dá cuando tipeas algún valor en esas celdas, no vale si tenés fórmulas allí (aunque esto no lo comentaste x lo que estimo no será así).

Explico un poco más lo que hace la rutina:

Sub acumula_Azul()
'x Elsamatilde
'si no se puede acceder al libro Azul, se pasa a la sección del mensaje y cancela el proceso.
On Error GoTo sinlibro
'recorre las filas 8 hasta la 43 de cada hoja del libro AMARILLO. 
'Cells(i,5) indica Cells(fila,col)
For i = 8 To 43
tot1 = Sheets("Hoja1").Cells(i, 5) + Sheets("Hoja2").Cells(i, 6) + Sheets("Hoja3").Cells(i, 6)
'una vez que sumó vuelca el resultado en la hoja1 del libro Azul. 
'aquí la fila es i+4, es decir que al sumar la fila 8 en libro amarillo coloca el resultado en fila 12 del libro Azul
Workbooks("Libro Azul.xls").Sheets("Hoja1").Cells(i + 4, 4) = tot1
Next i
Exit Sub
sinlibro:
MsgBox "El libro Azul no está abierto, el proceso se cancela", , "ERROR"
End Sub

me han sido de gran ayuda tus macros Elsa, y mas ayuda tu pagina de internet, de ahi he estado checando muy buenos proyectos, me tome la libertad de realizar las descargas, checarlas y muy buenos proyectos, espero pe puedas seguir ayudando, ya que tus ideas son muy buenas. felicidades x tus conocimientos.

Solo resta entonces finalizar la consulta.

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas