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.