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.