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.
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 ErroFor 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.
Filed under: Uncategorized | 2 Comments
Tags: asp, excel, macros, microsoft, software
Procurar
-
Encontra-se de momento a explorar os arquivos oito ... do weblog

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!
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.