Primeiro, faça uma cópia do seu arquivo, caso algo dê errado.
Em seguida, crie a seguinte sub-rotina VBA:
Sub StillLearning1()
For Each c In Range("A1:Z100")
If Not c.HasFormula Then
temp = WorksheetFunction.Substitute(c.Value, "*", "")
If Left(temp, 1) = "=" Or Left(temp, 1) = "'" Then
temp = "'" & temp
End If
c.Value = temp
End If
Next c
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.
StillLearning1 é apenas um nome de sub-rotina arbitrário;
use o nome que quiser.
Altere A1:Z100 para o intervalo em que você deseja que a substituição ocorra.
Espero que o resto seja um pouco autoexplicativo:
-
For Each c ... Next c é um loop que é executado 2600 vezes
(para o intervalo de amostra de A1:Z100 ; 26 colunas × 100 linhas)
com c indo para todas as células nesse intervalo.
-
c.HasFormula é um booleano que informa se a célula c contém uma fórmula.
Isso é um pouco mais confiável do que verificar se o primeiro caractere é = ,
porque uma célula que contém '=== é um valor de string (texto),
mas parecerá com === , e por isso parecerá começar com = .
Se uma célula contiver uma fórmula; deixe sozinho.
Se não contiver uma fórmula, faça a substituição.
- Verifique o resultado da substituição
para ver se começa com
= ou ' .
Se isso acontecer, atribuindo-o diretamente para a célula
resultará no Excel interpretando esse primeiro caractere de uma forma indesejável,
Portanto, proteja-o, prefixando um ' .
Em seguida, execute a sub-rotina.