Macro para restar (la penúltima - la última) fila en excel

Tengo los siguientes datos

A                  B            C              D                 E

                      I              10              20                 10

                      S          5                  15                  7

                      I           20                30                10

TOTAL  I                  30                 50                20

TOTAL  S                 5                   15                  7

Diferencia            25                   35                13

Lo que necesito es ubicar la penúltima y última fila y calcular la diferencia como se detalla en la tabla, no me funciona con fórmulas por que el rango no está definido (es decir los detalles de Ingresos y Salidas que genera el reporte pueden ser 10, 20, 5 o 30 filas y así sucesivamente).

¿Será posible hacer eso?

Respuesta
1

Yo hubiera optado por funciones en lugar de macros... pero aquí va una macro muy simple pero funcional:

Sub xxx()
Dim rng As Range
Set rng = Range("b2").CurrentRegion
f1 = Range("b2").Row
fila = f1 + rng.Rows.Count
rngCrit = "R" & f1 & "C2:R" & (fila - 1) & "C2"
'fila total i
Cells(fila, "A").Value = "total i"
Range("C" & fila, "E" & fila).FormulaR1C1 = "=SUMIF(" & rngCrit & ",""i"",R[" & (f1 - fila) & "]C:R[-1]C)"
fila = fila + 1
'fila total s
Cells(fila, "A").Value = "total s"
Range("C" & fila, "E" & fila).FormulaR1C1 = "=SUMIF(" & rngCrit & ",""s"",R[" & (f1 - fila) & "]C:R[-1]C)"
fila = fila + 1
'fila diferencia
Cells(fila, "A").Value = "diferencia"
Range("C" & fila, "E" & fila).FormulaR1C1 = "=R[-2]C-R[-1]C"
End Sub

Espero te sirva

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas