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 Next
diz 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
, definindoc
para se referir a cada célula em sequência. -
c.HasFormula
é um booleano que informa se a célulac
contém uma fórmula. Em seguida, também verificamos se o primeiro caractere da "fórmula" é=
. Isso é provavelmente redundante. Se é definitivamente uma fórmula, definatemp
para a fórmula real; isto é, tudo à direita do=
(por exemplo,3*F1
, no seu exemplo paraA2
). - Caso contrário, defina
temp
como 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 0
para restaurar o tratamento normal de erros.
Em seguida, execute a sub-rotina.
Obviamente, você pode alterar o intervalo ou a nova fórmula.