Texto VBA para colunas

Este tutorial mostrará como converter string de texto em uma única célula em várias colunas usando o método Range TextToColumns no VBA

Texto para colunas

o Faixa.TextToColumns O método em VBA é uma ferramenta poderosa para limpar dados que foram importados de arquivos de texto ou csv, por exemplo.

Considere a seguinte planilha.

Os dados vêm para o Excel em uma coluna e são separados por aspas.

Você pode usar o método Range TextToColumns para separar esses dados em colunas.

Sintaxe TextToColumns

expressão.TextToColumns (Destino, Tipo de dados, TextQualifier, ConsecutiveDelimiter, Aba, Ponto e vírgula, Vírgula, Espaço, De outros, OtherChar, FieldInfo, Separador decimal, Separador de milhares, TrailingMinusNumbers)

Expressão

Este é o intervalo de células que você deseja dividir - por exemplo: intervalo (“A1: A23”).

Todos os argumentos no método TextToColumns são opcionais (eles têm colchetes ao redor deles).

Destino

Onde você deseja que o resultado seja colocado - geralmente você substitui os dados e os divide no mesmo local.

Tipo de dados

O tipo de análise de texto que você está usando - pode ser xlDelimited (padrão se omitido), ou xlFixedWidth.

TextQualifier

Se houver aspas (simples ou duplas) ao redor de cada campo do texto que está dividindo, será necessário indicar se são simples ou duplas.

ConsequtiveDelimiter

Isso é verdadeiro ou falso e diz ao VBA para considerar 2 dos mesmos delimitadores juntos como se fosse 1 delimitador.

Aba

Este é também Verdade do Falso, o padrão é Falso - informa ao VBA que os dados são delimitados por uma guia.

Ponto e vírgula

Este é tambémVerdade do Falso, o padrão é Falso - informa ao VBA que os dados são delimitados por um ponto e vírgula.

Espaço

Este é também Verdade do Falso, o padrão é Falso - isso diz ao VBA que os dados são delimitados por um espaço.

De outros

Este é também Verdade do Falso, o padrão é Falso. Se você definir isso como True, o próximo argumento, OtherChar precisa ser especificado.

OtherChar

Este é o caractere pelo qual o texto é separado (por exemplo: ou | por exemplo).

FieldInfo

Este é um array contendo informações sobre o tipo de dados que está sendo separado. O primeiro valor na matriz indica o número da coluna nos dados e o segundo valor indica a constante que você usará para representar o tipo de dados necessário.

Um exemplo de 5 colunas com tipos de dados de texto, números e datas poderia ser:

Array (Array (1, xlTextFormat), Matriz (2, xlTextFormat), Array (3, xlGeneralFormat), Matriz (4, xlGeneralFormat), Matriz (5, xlMDYFormat))

Outra maneira de definir isso é:

Matriz (Matriz (1, 2), Matriz (2, 2), Matriz (3, 1), Matriz (4, 1), Matriz (5, 3))

Os números na segunda coluna são os valores das constantes em que a constante xlTextFormat tem valor 2, xlGeneralFormat (padrão) tem valor 1 e xlMDYFormat tem valor 3.

Separador decimal

Você pode especificar o separador decimal que o VBA deve usar se houver números nos dados. Se omitido, ele usará a configuração do sistema, que geralmente é um ponto.

Separador de milhares

Você pode especificar o separador de milhares que o VBA deve usar se houver números nos dados. Se omitido, ele usará a configuração do sistema, que geralmente é uma vírgula.

TrailingMinusNumbers

Este argumento é principalmente para compatibilidade de dados que são gerados a partir de sistemas mais antigos, onde um sinal de menos estava geralmente após o número e não antes. Você deve definir isso como True se os números negativos tiverem o sinal de menos atrás deles. O padrão é falso.

Convertendo Texto em Colunas

O procedimento a seguir converterá os dados do Excel acima em colunas.

12345678910111213141516 Sub TextToCol1 ()Range ("A1: A25"). TextToColumns _Destino: = Intervalo ("A1: A25"),DataType: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Tab: = Falso, _Ponto-e-vírgula: = Falso, _Vírgula: = Falso,Espaço: = Verdadeiro, _Outro: = Falso, _FieldInfo: = Array (Array (1, 1), Array (2, 1), Array (3, 1), Array (4, 1), Array (5, 1)), _DecimalSeparator: = "." , _ThousandsSeparator: = ",", _TrailingMinusNumbers: = TrueEnd Sub

No procedimento acima, preenchemos todos os parâmetros. No entanto, muitos dos parâmetros são definidos como falsos ou com a configuração padrão e não são necessários. Uma versão mais limpa do procedimento acima é definida abaixo. Você precisa usar os nomes dos parâmetros para indicar quais parâmetros estamos usando.

1234567 Sub TextToCol2 ()Range ("A1: A25"). TextToColumns _DataType: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Espaço: = Verdadeiro,End Sub

Existem apenas 4 parâmetros que são realmente necessários - os dados são delimitados por uma aspa dupla, você deseja que as aspas consecutivas sejam tratadas como uma e os dados são separados por um espaço!

Para uma linha de código ainda mais rápida, poderíamos omitir os nomes dos parâmetros, mas então precisaríamos colocar vírgulas para salvar o local do parâmetro. Você só precisa colocar a informação até o último parâmetro que está usando - neste caso o espaço que separa os dados que é o 8º parâmetro.

123 Sub TextToCol3 ()Range ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueEnd Sub

Depois de executar qualquer um dos procedimentos acima, os dados serão separados conforme o gráfico abaixo.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave