Borrar Fórmula sin borrar datos

Quiero que una fórmula de excel se ejecute y cuando se halle el resultado se borre la fórmula y me quede unicamente el resultado en la celda, de tal forma que la próxima vez que abra el libro no se cambie el dato anterior.

1 respuesta

Respuesta
1
Como no dejaste referencias, tendrás que armar tu macro con la grabadora.
Desde menú Herramientas, macros, optá por grabar.
Seleccioná tu celda con fórmula y clic en copiar
Sin quitar la selección, andá a menú Edición, Pegado especial, valores
Ahora detené la grabadora y en un módulo del Editor, encontrarás la instrucción o macro para esto.
Si tenés dificultades para adaptarla a una macro general como puede ser en la apertura del libro enviame lo que encontraste en el módulo.
OK, ven te explico que quiero hacer exactamente, ya logre que me borre las fórmulas y me deje los resultados con esto:
Sub BorrarFormulas()
Application.ScreenUpdating = False
Sheets("registro").Select
Range("F:F").Select
Selection.Copy
Sheets("registro").Select
Range("F:F").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("registro").Select
Range("F4").Select
Application.ScreenUpdating = True
End Sub
Pero esto me borra todos las formulas de la columna f, esa columna tiene esta formula
=si(H4>0;HOY();"") -->> esto para F4
Entonces lo que quiero es que me borre las fórmulas unicamente cuando se cumpla esta fórmula, de tal forma que me queden habilitadas las otras celdas para el momento en que se digite algún dato, para eso trate de meter un if así:
Sub BorrarFormulas()
If Range("H:H") > 0 Then
Application.ScreenUpdating = False
Sheets("registro").Select
Range("F:F").Select
Selection.Copy
Sheets("registro").Select
Range("F:F").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("registro").Select
Range("F4").Select
Application.ScreenUpdating = True
End If
End Sub
Pero no me sirvió, te agradecería que me colaboraras, y disculpa tanta molestia
Bien, en ese caso necesitás recorrer el rango, ya sea H o F y evaluar 1 x 1 con un bucle.
Esta rutina evalúa si aún tiene fórmula y en col H el valor es > 0:
Sub PegaValores()
'x Elsamatilde
'busco la última fila con datos en col que SIEMPRE TENDRÁ DATOS hasta el final
'Final = ActiveSheet.Range("A65536").End(xlUp).Row
'o coloco un nro total de filas a revisar
Final = 30
'recorro col F. Si aún tiene fórmula y el valor de H es > 0 copio valor en lugar de fórmula
Range("F2").Select
While ActiveCell.Row <= Final
If ActiveCell.HasFormula And ActiveCell.Offset(0, 2) > 0 Then
    ActiveCell.Copy
    ActiveCell.PasteSpecial xlPasteValues
End If
'paso a la fila sgte para continuar con el bucle
ActiveCell.Offset(1, 0).Select
Wend
Application.CutCopyMode = False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas