Já por várias vezes me aconteceu ter que importar um ficheiro em Excel para uma tabela no SQL Server e perder dados na importação devido a células que deveriam ser números, estarem assumidas como texto.

Quando isto acontece, o Excel dá-nos essa indicação e permite-nos converter esse mesmo texto para número.

Excel_Numero_Para_Texto

Quando temos poucos dados, esta correcção torna-se fácil e não perdemos muito tempo. O problema é quando temos um ficheiro com milhares de linhas e dezenas de colunas e temos que andar à procura de todas as células que possam ter esse erro.

Para me resolver esse problema, criei uma Macro que vai percorrer todas as células no intervalo definido e verificar se existe este erro, e caso exista vai corrigi-lo.

Para saber que determinada célula está neste estado, as funções IsText() e IsNumeric() terão que retornar um valor verdadeiro, e para corrigir basta alterar o valor da célula para o valor actual :)

A Macro pode ser algo como isto:

Sub ConverterTextoParaNumero()
On Error GoTo Erro

For Each celula In Range(“A:A”)
If IsNumeric(Range(celula.Address)) And Application.WorksheetFunction.IsText(Range(celula.Address)) Then
celula.Interior.ColorIndex = 36
celula.Value = celula.Value
End If
Next celula
MsgBox “Processo terminado”

Exit Sub
Erro:
MsgBox “Erro no processo”
End Sub

Este código vai percorrer todo o intervalo definido e alterar todas as células no estado de “Número copiado como texto” para um fundo amarelo e corrigir o erro.



2 Responses to “Excel – Converter Texto para Número automáticamente”  

  1. 1 Luís Gustavo Roma

    Desenvolvi um algoritimo espetacular para resolver este problema. E o melhor, não é necessário usar macro.
    Expertimente multiplicar o texto por 1. Garanto que o resultado é imediato! E para qualquer planilha com 1 milhão de linhas, garanto que não vai demorar mais do que 5 segundos para rodar.
    Try it!

  2. Luis, isso funciona, e eu actualmente já o faço, mas apenas para ficheiros que a informação nas colunas o permita fazer, ou seja, que apenas contenha números.
    Eu construi esta macro pois trabalho com ficheiros que contêm muitas colunas e em grande parte delas a informação tanto é texto como números na mesma coluna.
    E desta forma evita que ande a pesquisar em todas as colunas se a conversão foi feita correctamente.


Leave a Reply