Macro cambiar una formula por otra

Sustituir una fórmula por otra

necesito por favor una macro que recorra la columna K y cuando se encuentre la fórmula =SUMA(J1919:J1924) la cambie por =REDONDEAR(SUMA(J1919:J1924);2)

En la columna se encuentran muchas filas vacías y otra fórmulas que no son =SUMA.

Evidentemente el rango de la suma va cambiando. No es siempre el mismo.

Este problema me ocurre porque tengo un archivo donde esa suma da un resultado que se multiplica por un precio.

Pero ese resultado tiene a veces muchos decimales y aunque el formato de celda está en dos decimales el precio opera por el resultado con todos los decimales y me desvirtúa la cantidad.

Los archivos que manejo llegan a ser de muchas filas, 2000, 3000, e incluso más.

1 respuesta

Respuesta
2

H o l a:

Te anexo la macro para cambiar las fórmulas

Sub FormulaCelda()
'Por.Dante Amor
    Application.Calculation = xlManual
    Application.ScreenUpdating = False
    For i = 1 To Range("K" & Rows.Count).End(xlUp).Row
        If Cells(i, "K").HasFormula Then
            mifor = Cells(i, "K").Formula
            If Mid(mifor, 2, 3) = "SUM" Then
                p1 = InStr(1, mifor, "(") + 1
                p2 = InStr(1, mifor, ")")
                largo = p2 - p1
                rango = Mid(mifor, p1, largo)
                Cells(i, "K").Formula = "=round(sum(" & rango & "),2)"
            End If
        End If
    Next
    Application.Calculation = xlAutomatic
    Calculate
    MsgBox "Fin"
End Sub

':)
':)

¡Gracias! Funciona perfectamente

Hola Dante Amor, la fórmula funciona correctamente pero debo incluirla en el mismo libro donde la voy a ejecutar. En mi caso que la tengo en un archivo  .xlam aparte, enlazada a un menú que tengo con macros no me funciona. Me da error en For i.

Dime por favor si tiene alguna solución.

Gracias

Tendría que revisar la macro en el libro.

Pero prueba con lo siguiente,

En una línea antes del For i

escribe:

Dim i, mifor, p1, p2, largo, rango

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas