O recurso "Localizar e substituir" do Excel não parece ser poderoso o suficiente fazer o que quiser. No entanto, é bastante fácil no VBA.
Primeiro, faça uma cópia do seu arquivo, caso algo dê errado.
Em seguida, crie a seguinte sub-rotina VBA:
Sub Arom79Sub()
On Error Resume Next
For Each c In Range("A1:A5")
If c.HasFormula And Left(c.Formula, 1) = "=" Then
temp = Right(c.Formula, Len(c.Formula) - 1)
Else
temp = c.Value
End If
If temp <> "" Then
c.Formula = "=ROUND(" & temp & ", 2)"
End If
Next c
On Error GoTo 0
End Sub
Veja Como adiciono o VBA no MS Office? para obter informações gerais
sobre como usar o VBA no Excel e os outros aplicativos do Microsoft Office.
Arom79Sub é apenas um nome de sub-rotina arbitrário;
use o nome que quiser.
-
On Error Resume Nextdiz que, se ocorrer um erro, basta ir ao próximo extrato e continuar correndo. (Por exemplo, se uma célula contiver um valor constante que não seja um número (isto é, um valor de string / texto), o código acima causará um erro.) -
For Each c...Next cé um loop que olha para cada célula no intervaloA1:A5, definindocpara se referir a cada célula em sequência. -
c.HasFormulaé um booleano que informa se a célulaccontém uma fórmula. Em seguida, também verificamos se o primeiro caractere da "fórmula" é=. Isso é provavelmente redundante. Se é definitivamente uma fórmula, definatemppara a fórmula real; isto é, tudo à direita do=(por exemplo,3*F1, no seu exemplo paraA2). - Caso contrário, defina
tempcomo o valor na célula (por exemplo,50.64635, no seu exemplo paraA1). - Se o valor (ou fórmula) não estiver em branco, defina a fórmula da célula como sendo
=ROUND(previous_contents, 2). - Execute
On Error GoTo 0para restaurar o tratamento normal de erros.
Em seguida, execute a sub-rotina.
Obviamente, você pode alterar o intervalo ou a nova fórmula.