Ayuda con la suma de valores de diferentes hojas
Hola, soy nueva en la programación de macros, y deseo realizar una macro que realice la suma de valores que se encuentran en diferentes hojas, alguien que me pueda ayudar. Ya realice la suma utilizando el asistente de grabación de macros, pero me gustaría depurar el código, ya que veo que tiene mucha basura.
Se los agradecería mucho si alguien me puede ayudar
1 respuesta
Para poder ayudarte tienes que aportar más datos:
Que rangos quieres sumar
En qué hojas están esos rangos: en todas... en algunas en particular...
donde colocamos la suma...
...
Faltan datos.
ok, mira mi problema es el siguiente:
tengo una hoja donde calculo los gastos de la empresa por mes y otra donde genero un reporte consolidando los datos de tal forma que se realiza un acumulado de gastos dependiendo del mes, ejemplo ( me piden el reporte de agosto y su acumulado debe tener la suma de los gastos de julio, junio, mayo....etc), lo hago mediante formulas, pero dependen del mes en cuestión, y estoy haciendo una macro para que solo seleccionen el mes y entre en un case y haga el calculo automático, pero tengo problemas para realizar la suma.
Los datos están ubicados en diferentes celdas por ejemplo tengo un total en C4 otro total G4, y asi sucesivamente.
Aprovechando el espacio y tu conocimiento, como copio la misma formula en toda una columna, mediante un ciclo, por ejemplo en la celda m12, pongo la operación =k12/j12 y esa formula la arrastro hasta m64, como puedo hacer esto de forma que se ha automático el calculo y no tenga que arrastrar la formula y esta no sea visible para el usuario.
Muchas gracias y espero me puedas ayudar con estos dos problemitas
Empiezo por la segunda:
Si no quieres que el usuario vea la fórmula escrita en el rango M12:M64 puedes proteger y ocultar dichas celdas con contraseña para que no se vea su contenido o quizás quieras un procedimiento con macro para realizar dicho cálculo... tu dirás.
En cuanto al primero sigo sin tener todos los datos. Necesito saber los rangos que vamos a sumar de cada pestaña o quizás ver el archivo con un ejemplo que hagas tú de forma manual y explicado.
Empecemos con la sumatoria, esto es lo que estoy haciendo
Realice un formulario en el cual mediante botones asocio una macro que se llama Genera Reporte, esta macro primera verifica si el reporte solicitado ya fue generado con anterioridad y este se encuentre en la hoja de reportes históricos, si ya fue generado solo copia la información del histórico al reporte del mes, a continuación te muestro parte del código, referente al mes de enero
Sub Genera_Reporte()
'Genera el reporte
vmes = Range("J13").Value ' toma el valor de la celda asociada al check list
Select Case vmes
Case 1
Sheets("HISTÓRICO GASTO").Select
' cada reporte tiene un bandera si esta es 0 aun no hay reporte referente al mes
Status = Range("c4").Value
'revisa si el reporte ya ha sido creado con anterioridad, si es asi solo consulta el histórico
If Status = vmes Then
Range("C5:J64").Select
Selection.Copy
Sheets("REPORTE MENSUAL").Select
Range("B5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'obtiene el acumulado
Range("j7").Value = Range("b7").Value
Range("j8").Value = Range("b8").Value
Range("k7").Value = Range("e7").Value
Range("k8").Value = Range("e8").Value
Range("b12:b64").Select
Selection.Copy
Range("j12").Select
ActiveSheet.Paste
Range("e12:E64").Select
Selection.Copy
Range("k12").Select
ActiveSheet.Paste
''''' en esta parte se realiza el acumulado y es donde me gustaría meter un ciclo para que se copie la misma operación en esas celdas y no hacerlo manual
de M7 hasta M64
Range("M7").Value = Range("k7").Value - Range("j7").Value
Range("M8").Value = Range("k8").Value - Range("j8").Value
Range("M9").Value = Range("k7").Value - Range("j7").Value
Range("M10").Value = Range("k8").Value - Range("j8").Value
....
de N7 hasta N64
Range("n7").Value = Range("m7").Value / Range("j7").Value
Range("n8").Value = Range("m8").Value / Range("j8").Value
Range("A2").Select ' se posiciona en la celda A2
Con enero no tengo problema en realizar su acumulado debido a que es el primer mes del año pero de febrero en adelante si, he utilizado el grabador de macros pero genera algunos problemas, sin mesionar la cantidad de código
Caso de Febrero
Case 2
Sheets("HISTÓRICO GASTO").Select
Status = Range("L4").Value
If Status = vmes Then
Range("L5:S64").Select
Selection.Copy
Sheets("REPORTE MENSUAL").Select
Range("B5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' parte donde se optine el acumulado
'obtener el acumulado mediante macro, lo que hago es posicionarme en la celda j7 y pongo la formula de suma, de ahi me voy a la hoja de histórico y selecciono las celdas que contienen la información a sumar. Después desplazo la formula en toda la columna para se realice el acumulado de los diferentes conceptos.
Sub Macro3()
Range("J7").Select
ActiveCell.FormulaR1C1 = _
"=SUM('HISTÓRICO GASTO'!RC[-7],'HISTÓRICO GASTO'!RC[2])"
Range("J7").Select
Selection.AutoFill Destination:=Range("J7:J8"), Type:=xlFillDefault
Range("J7:J8").Select
Range("J12").Select
ActiveCell.FormulaR1C1 = _
"=SUM('HISTÓRICO GASTO'!RC[-7],'HISTÓRICO GASTO'!RC[2])"
Range("J12").Select
Selection.AutoFill Destination:=Range("J12:J64"), Type:=xlFillDefault
Range("J12:J64").Select
ActiveWindow.SmallScroll Down:=-36
End Sub
De esta forma tendría que hacer una macro por mes, y después llamarla en la principal, y quería ver si hay una forma mas fácil de hacerlo mediante un ciclo, con la bandera llevo el control del mes en cuestión, por ejemplo si es febrero el mes a calcular mi idea es hacerlo asi:
for m=0 to vmes
n=7
range("jn").select
Sheets("HISTÓRICO GASTO").Select
x = suma(Cn,Ln,Un,ADn,AMn,AVn,BEn,BNn,BWn,CFn,CXn) acumulado de diciembre
Sheets("REPORTE MENSUAL").Select
range("jn).value=x
next m, n
pero ovio no funciona :(
Espero que me puedas ayudar y que ahora si me aya dado a entender
- Compartir respuesta