Sumar 3 celdas de un libro y guardar en otro libro el resultado

buenas tardes tengo dos archivos de excel donde de uno obtango datos para llenar otro, es un informe y para hacerlo mas automatizado cree una macro para copiar celdas en especifico de un archivo a otro con un cuadro de dialogo de abrir, pero ahora tengo que sumar el 3 celdas del archivo origen y guardar el resultado un una celda del archivo destino, lo estaba haciendo de esta forma

Windows(nombre1).Activate
Range("AA18").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
Selection.Copy
Windows("LIE 2012 yo.xlsm").Activate
Range("H19").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.NumberFormat = "#,##0"

utilizaba una celda de paso en este caso la AA18 que estaba libre y sumar las 3 celdas hacia arriba de esa intentar, pero ahora tengo que sumar 3 celdas que del centro de un rango, hice una macro automática para obtener la sumatoria que es esta...


Windows("LIE 2012 yo.xlsm").Activate

Range("H26").Select
ActiveCell.FormulaR1C1 = _
"=SUM('[INFORME Septiembre 2012.xlsx]ACUMULADO SEPTIEMBRE'!R22C14:R24C14)"
Range("H26").Select

...pero lo que quiero es que no lleve el nombre del archivo ni el nombre de la hoja fijas, sino que sean variables algo asi quiero q este en la macro, pero no se como hacerle..

Windows("LIE 2012 yo.xlsm").Activate
Range("H26").Select
ActiveCell.FormulaR1C1 = _"=SUM('[nombre1]activesheet'!R22C14:R24C14)"

1 respuesta

Respuesta
1

Esta podría ser una forma.

wsuma = Range("N22") + Range("N23") + Range("N24")

Workbooks("LibroB").Worksheets("Hoja1").Range("H19").Value = wsuma

Obtienes la suma en la variable wsuma

Luego sin cambiar de libro, pero el libro destino tiene que estar abierto, le dices el libro, la hoja y la celda donde vas a poner el valor que trae wsuma

Revísalo y me comentas, cualquier duda con gusto la vemos.

Saludos. Dam

Con estos dos ejemplos también obtienes el mismo resultado

wsuma2 = WorksheetFunction.Sum(Range("N22:N24"))

wsuma3 = WorksheetFunction.Sum(Range(Cells(22, 14), Cells(24, 14)))

Saludos. Dam

muchas gracias me fue de gran utilidad el uso de la variable para almacenar el resultado, ahora tengo otra pregunta, quiero declarar una variable para que la columna sea cambiante, por ejemplo para enero es la columna h, para febrero la I y quisiera que el usuario tecleara el numero del mes y de acuerdo a ello se fuera a la columna correspondiente por ejemplo poner un inputbox que pida al usuario teclear el numero del mes, luego internamente por medio de un select case validar case 1 variable = H (letra de la columna) ... case12 variable =S y después sustituir esa variable en range("variable26").select<------ aquí es donde quisiera saber como va la sintaxis para sustituir el valor

range("variable22:variable33").select


me podrías decir como va la sintaxis para sustituir la variable

Tienes que contar las columnas, de esta forma:

La columna A es la columna 1,

La columna B es la 2

...

La H es la 8

La I es 9

Entonces para enero, que va en la columna H, le toca el número 8

a Feb el 9

a Mar el 10

...

La macro con SELECT quedaría así

'***

Sub suma()
mes = InputBox("Mes: ")
Select Case mes
Case 1 'Enero le toca la columna 8
wsuma3 = WorksheetFunction.Sum(Range(Cells(22, 8), Cells(24, 8)))
Case 2 'Feb le toca la columna 9
wsuma3 = WorksheetFunction.Sum(Range(Cells(22, 9), Cells(24, 9)))
End Select
End Sub

'***

O si prefieres la abreviada, sería así, en esta caso te sumaría la columna del mes que tu le indiques, le puse 7, porque si eliges el mes 1 (enero), entonces 7 + 1 = 8, le estoy diciendo que me sume los valores de la columna 8

'***

Sub suma2()
mes = InputBox("Mes: ")
wsuma3 = WorksheetFunction.Sum(Range(Cells(22, 7 + mes), Cells(24, 7 + mes)))
End Sub

'***

Por favor, podrías cerrar la pregunta, es una por evento.

muchas gracias por tomarte la molestia de contestar a mis dudas, lamentablemente la ultima respuesta asi no la necesito, ya que de hacerlo asi tendría que duplicar mucho código, de todas maneras muchas gracias lo planteare en una nueva respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas