Alterar texto para número usando VBA

Índice:

Anonim

Em uma tarefa recente, eu estava filtrando por meio do VBA em uma coluna de número. Mas essa coluna de número tinha números em formato de texto. Quando eu executei o script VBA, é claro que não funcionou, porque o filtro era um número e a coluna tinha números como texto. Nesse caso, precisei converter o texto em números manualmente e salvá-lo. Então a macro funcionou perfeitamente. Mas eu queria converter esses textos em números usando o script VBA e fui capaz de fazer isso. Eu queria compartilhar isso como se alguém quisesse saber como converter valores de texto em um número usando o VBA, eles poderiam dar uma olhada.

Converter texto em número usando o método Range.NumberFormat

Este primeiro e mais fácil método. Eu prefiro esse método a outros métodos, pois ele converte diretamente o intervalo selecionado do Excel em formato de número.

Portanto, se você tiver um intervalo fixo que deseja converter em texto, use este trecho de VBA.

Sub ConvertTextToNumber () Range ("A3: A8"). NumberFormat = "General" Range ("A3: A8"). Value = Range ("A3: A8"). Value End Sub 

Quando você executa o código acima, ele converte o texto do intervalo A3: A8 em texto.

Este código pode parecer mais elegante se o escrevermos assim.

Sub ConvertTextToNumber () With Range ("A3: A8") .NumberFormat = "Geral" .Value = .Value End With End Sub 

Como funciona?

Bem, é bastante simples. Primeiro alteramos o formato do número do intervalo para Geral. Em seguida, colocamos o valor desse intervalo no mesmo intervalo usando VBA. Isso remove a formatação do texto completamente. Simples, não é?

Alterar o número de formatação de um intervalo dinâmico

No código acima, mudamos o texto para um número no código acima de um intervalo fixo, mas esse não será o caso na maioria das vezes. Para converter texto em vários intervalos dinâmicos, podemos avaliar a última célula usada ou selecionar o intervalo dinamicamente.

É assim que ficaria:

Sub ConvertTextToNumber () With Range ("A3: A" & Cells (Rows.Count, 1) .End (xlUp) .Row) .NumberFormat = "General" .Value = .Value End With 

Aqui, eu sei que o intervalo começa em A3. Mas não sei onde isso pode terminar.
Portanto, identifico dinamicamente a última linha usada do Excel que contém dados usando o fragmento Cells do VBA (Rows.Count, 1) .End (xlUp) .Row. Ele retorna o último número de linha usado que estamos concatenando com "A3: A".

Observação: Este snippet VBA funcionará na pasta de trabalho ativa e na planilha ativa. Se o seu código alternar entre várias planilhas, seria melhor definir um objeto de intervalo da planilha pretendida. Assim

Sub ConvertTextToNumber () Set Rng = ThisWorkbook.Sheets ("Sheet1"). Range ("A3: A" & Cells (Rows.Count, 1) .End (xlUp) .Row) With Rng .NumberFormat = "General" .Value = .Value End With End Sub 

O código acima sempre mudará o texto para o número da planilha1 da pasta de trabalho que contém esse código.

Loop e CSng para alterar o texto para número

Outro método é percorrer cada célula e alterar o valor da célula para um número usando a função CSng. Aqui está o código.

Sub ConvertTextToNumberLoop () Set Rng = ThisWorkbook.Sheets ("Sheet1"). Range ("A3: A" & Cells (Rows.Count, 1) .End (xlUp) .Row) Para cada célula em Rng.Cells cel.Value = CSng (cel.Value) Next cel End Sub 

No fragmento de VBA acima, estamos usando o loop VBA For para iterar sobre cada célula no intervalo e converter o valor de cada célula em um número usando a função CSng do VBA.

Então, sim pessoal, é assim que você pode transformar textos em números no Excel usando o VBA. Você pode usar esses fragmentos para preparar sua planilha antes de fazer qualquer operação numérica neles. Espero ter sido suficientemente explicativo. Você pode baixar o arquivo de trabalho aqui.

Alterar texto para número usando VBA.

Se você tiver alguma dúvida em relação a este texto para conversão numérica ou qualquer outra consulta relacionada ao excel / VBA, pergunte na seção de comentários abaixo.

Como obter texto e número em reverso por meio do VBA no Microsoft Excel | Para reverter número e texto, usamos loops e função mid no VBA. 1234 será convertido para 4321, "você" será convertido para "uoy". Aqui está o trecho.

Formate dados com formatos de números personalizados usando VBA no Microsoft Excel | Para alterar o formato de número de colunas específicas no Excel, use este trecho de VBA. Abrange o formato de número do formato especificado para o formato especificado em um clique.

Artigos populares:

50 atalhos do Excel para aumentar sua produtividade | Torne sua tarefa mais rápida. Esses 50 atalhos farão você trabalhar ainda mais rápido no Excel.

A função VLOOKUP no Excel | Esta é uma das funções mais usadas e populares do Excel, que é usada para pesquisar valores em diferentes intervalos e planilhas.

CONT.SE no Excel 2016 | Conte valores com condições usando esta função incrível. Você não precisa filtrar seus dados para contar um valor específico. A função Countif é essencial para preparar seu painel.

Como usar a função SUMIF no Excel | Esta é outra função essencial do painel. Isso ajuda você a somar valores em condições específicas.