Calcular valores en rangos dinámicos con macro

Espero me puedan ayudar me encuentro realizando una macro en donde debo calcular los valores en un rango dinámico, esto se debe a que la tabla en donde tengo la información no siempre es la misma y varia la cantidad de datos de las cuales uso la siguiente fórmula que funciona bien.

' Calcular el Sub-Total del Importe Total
With Range("C2").CurrentRegion
UltimaFila = .Rows(.Rows.Count).Row
Range("F2:F" & UltimaFila).Formula = "=round(C2/1.18, 2)"
Range("G2:G" & UltimaFila).Formula = "=round(F2*0.18, 2)"
End With

' Enumerar filas por Mes y "0000"
With Range("D2").CurrentRegion
UltimaFila2 = .Rows(.Rows.Count).Row
Range("H2:H" & UltimaFila2).Formula = "=text(D2,""mm"")&text(row()-1,""0000"")"
End With

Con esta macro logro insertar las fórmulas en las filas y calcular sin problemas, el inconveniente es que se ven las fórmulas y solo deseo que se vea el resultado final estuve intentado de estas 2 maneras con la primera fórmula pero no tengo resultados.

'-------primera prueba----------------valor es cero
With Range("C2").CurrentRegion
UltimaFila = .Rows(.Rows.Count).Row
Range("F2:F" & UltimaFila).value = round(C2/1.18, 2)
End With

'-------segunda prueba----------------valor es cero
With Range("C2").CurrentRegion
UltimaFila = .Rows(.Rows.Count).Row

valor = round(C2/1.18, 2)
Range("F2:F" & UltimaFila).value = valor
End With

1 respuesta

Respuesta
1

H0la Manigoldo:

Para no alterar mucho tu código, puedes hacer lo siguiente

    With Range("C2").CurrentRegion
    UltimaFila = .Rows(.Rows.Count).Row
    Range("F2:F" & UltimaFila).Formula = "=round(C2/1.18, 2)"
    Range("G2:G" & UltimaFila).Formula = "=round(F2*0.18, 2)"
    'Esas dos líneas reemplzan el contenido por el valor de la celda'
    Range("F2:F" & UltimaFila).Value = Range("F2:F" & UltimaFila).Value
    Range("G2:G" & UltimaFila).Value = Range("G2:G" & UltimaFila).Value
    End With

De forma análoga, en tu segundo caso, después de esta línea

Range("H2:H" & UltimaFila2).Formula = "=text(D2,""mm"")&text(row()-1,""0000"")"

Agregas esta

Range("H2:H" & UltimaFila2).Value = Range("H2:H" & UltimaFila2).Value 

Parece redundante, pero funciona.

S@lu2

¡Gracias! Me funciono bien ahora de esa manera puedo ocultar las fórmulas y no saben la información que utilizo para las demás tablas, agradezco mucho tu apoyo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas