Quiero sumar un rango de la columna DE desde la ultima fila ocupada a la primera fila en blanco que encuentre.

Quiero sumar un rango de la columna D desde la ultima fila ocupada hacia arriba hasta la primera fila en blanco que encuentre, lo he intentado pero no se porque CELINI no acepta el rango variable que le pongo.

La macro es:

ULTFILACAJAC = Cells(Rows.Count, 3).End(xlUp).Row
ULTFILACAJAA = Cells(Rows.Count, 1).End(xlUp).Row
FILATOTALCAJA = Cells(Rows.Count, 3).End(xlUp).Row + 1
If ULTFILACAJAC <> ULTFILACAJAA Then
MsgBox " ATENCION YA ESTA TOTALIZADO"
Exit Sub
End If
'
Range("C" & FILATOTALCAJA).Select
Selection.Font.Bold = True
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
For FILAS = ULTFILACAJAA To 3 Step -1
If Range("C" & FILAS) = "" Then
PRIMERAFILACAJA = FILAS + 1
Exit For
End If
Next
MsgBox "PRIMERAFILACAJA= " & PRIMERAFILACAJA
'CELINI = Range(D1451)
'CELFIN = Range(D1488)
CELINI = Range("D" & PRIMERAFILACAJA)
'Range ("D" & PRIMERAFILACAJA)
CELFIN = Cells(Rows.Count, 4).End(xlUp).Row
MsgBox "CELINI: " & CELINI & "CELFIN: " & CELFIN
' SUMAINGRESOS = Range(CELINI, CELFIN)
'SUMAINGRESOS = Cells(PRIMERAFILACAJA, 4, Cells(ULTFILACAJAA, 4))
'Referencia de otra forma el rango c2:d10

'Range(Cells(2, 3), Cells(10, 4)).Select
' TOTALINGRESOS = Application.WorksheetFunction.Sum(SUMAINGRESOS)
'Range("C" & FILATOTALCAJA) = "TOTAL: " & TOTALINGRESOS
Range("C" & FILATOTALCAJA).Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWindow.SmallScroll Down:=3

1 Respuesta

Respuesta
2

Corriendo tu macro se recibe el siguiente mensaje:

Observa que le estás enviando a CELINI el valor de la celda D en fila indicada por la variable:

CELINI = Range("D" & PRIMERAFILACAJA)

Por lo tanto, si lo que deseas es sumar hasta la PRIMERAFILACAJA solo debes indicarle que CELINI = PRIMERAFILACAJA.

Ahora, para encontrar la primer fila una vez obtenida la última no necesitas un bucle, lo puedes hacer de este modo. En este caso para col D:

CELFIN = Cells(Rows.Count, 4).End(xlUp).Row
CELINI = Range("D" & CELFIN).End(xlUp).Row

Perfecto, ya me da los números de fila, pero como hago para sumar de la columna D entre esas filas CELINI y CELFIN, lo he intentado con estos dos métodos, pero no consigo nada.

sumaingresos = Range("D" & CELINI, "D" & CELFIN)
' MsgBox sumaingresos
sumaingresos = Cells(CELINI, 4) & ": Cells(CELFIN, 4)"

Gracias anticipadas por tu ayuda

Atentamente:

Alfredo

Tenés 2 maneras de escribirlo:

SUMAINGRESOS = Range("D" & CELINI & ":D" & CELFIN)

SUMAINGRESOS = Range(Cells(CELINI, 4), Cells(CELFIN, 4))

PD) En la sección Macros de mi sitio encontrarás otras instrucciones básicas para referenciar celdas y rangos.

Sdos y no olvides valorar la respuesta (Excelente o Buena) si el tema queda resuelto.

Elsa

Lo he probado y SUMAINGRESOS no me da ningún valor ni dato, y al querer sumar ese rango me da 0. te adjunto la forma de sumarlo que he puesto.

CELFIN = Cells(Rows.Count, 4).End(xlUp).Row
CELINI = Range("D" & CELFIN).End(xlUp).Row
MsgBox "CELINI: " & CELINI & "CELFIN: " & CELFIN
'sumaingresos = (Range("D" & CELINI & ":D" & CELFIN))
sumaingresos = Range(Cells(CELINI, 4), Cells(CELFIN, 4))
MsgBox "suma ingresos" & SUMAINGRESOS
RESULTADOSUMAINGRESOS = Application.WorksheetFunction.Sum(SUMAINGRESOS)
Range("C" & FILATOTALCAJA) = RESULTADOSUMAINGRESOS

No se como hacer para que sume ese rango.

esprerando tu apreciada ayuda, te saluda atentamente:

Alfredo.

¿Por qué no utilizaste la instrucción que te envíe?

La dejaste inhabilitada y seguís intentando con la tuya que no es correcta... no entiendo tu proceder.

Sdos.

Nio, espera. Lo estoy leyendo en el cel y se me mezclarin las líneas.

Creo que te falra en cyalquiera de las 2 terminarla con . Address

Te la oaso completa en un momento.

No, esta todo correcto. ¿Quizás es cómo declaraste la variable?

Mirá esta tabla y probá con la siguiente macro:

Cualquiera de las 2 instrucciones te dará el mismo resultado.

Revisa bien o pásame el libro con esta hoja y toda la macro y te ayudo a revisarla.

Sdos!


¿Me puedes indicar la dirección de tu correo electrónico p'ara enviártelo por favor?

Gracias.

Atentamente:

Alfredo

Están en mi sitio que dejo debajo de la firma. Puede ser cibersoft. Arg de gmail

Te ruego me indiques como te envío el libro con la hoja de calculo y la macro para que puedas verla y decirme donde esta el fallo, que yo soy incapaz de verlo.

Atentamente:

alfredo

[email protected]  indica en el mail tu nombre de usuario y las claves si las hay.

Sdos!

No recibí correo y la macro está correcta para el ejemplo solicitado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas