ao trabalhar com o VBA no Excel, você pode ter a necessidade de dividir uma string em diferentes partes com base num delimitador.
por exemplo, se você tem um endereço, você pode usar a função de divisão VBA para obter diferentes partes do endereço que são separadas por uma vírgula (Que seria o delimitador neste caso).
SPLIT é uma função string inbuilt no Excel VBA que você pode usar para dividir uma string de texto com base no delimitador.,
Este Tutorial Cobre:
VBA do Excel a Função de DIVIDIR – Sintaxe
Split ( Expression, , , )
- Expressão: Esta é a seqüência que você deseja dividir com base no delimitador. Por exemplo, no caso do exemplo de endereço, o endereço inteiro seria a “expressão”. No caso de Esta ser uma string de zero-length ( “” ), A função SPLIT retornaria um array vazio.delimitador
- : Este é um argumento opcional. Este é o delimitador que é usado para dividir o argumento “expressão”., No caso do nosso exemplo de Endereço, uma vírgula É um delimitador que é usado para dividir o endereço em diferentes partes. Se você não especificar este argumento, um caractere de espaço é considerado o delimitador padrão. No caso de você dar uma string de tamanho zero (“”), a string de ‘expressão’ inteira é retornada pela função.
- limite: este é um argumento opcional. Aqui você indica o número total de sub-sequências que deseja devolver. Por exemplo, se você só quiser devolver os três primeiros substratos do argumento ‘expressão’, este seria 3., Se não indicar este argumento, o valor por omissão é-1, que devolve todas as sub-sequências.
- Compare: este é um argumento opcional. Aqui você indica o tipo de comparação que deseja que a função de divisão seja realizada ao avaliar as sub-sequências. As seguintes opções estão disponíveis:
- Quando comparar é 0: esta é uma comparação binária. Isto significa que se seu delimitador é uma cadeia de texto( digamos ABC), então isso seria case-sensitive. “ABC” não seria igual a “abc”.
- Quando comparar é 1: Esta é uma comparação de texto., Isto significa que se seu delimitador é uma cadeia de texto( digamos ABC), então mesmo se você tem ‘abc’ na cadeia de expressão, ele seria considerado como um delimitador.
Agora que cobrimos o básico da função SPLIT, vamos ver alguns exemplos práticos.
exemplo 1-dividir as palavras em uma frase
Suponha Que Eu Tenho o texto – “A Raposa castanha rápida salta sobre o cão preguiçoso”.
I can use the SPLIT function to get each word of this sentence into as a separate item in an array.,
o código abaixo seria:
Sub SplitWords()Dim TextStrng As StringDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result() = Split(TextStrng)End Sub
embora o código não faça nada de Útil, Ele irá ajudá-lo a entender o que a função dividida em VBA faz.
A função Split divide a cadeia de texto e atribui cada palavra à matriz de resultados.
assim, neste caso:
- resultado (0) armazena o valor “o”
- Resultado(1) armazena o valor “Rápido”
Resultado(2) armazena o valor “marrom” e assim por diante.
neste exemplo, só especificamos o primeiro argumento – que é o texto a ser dividido., Uma vez que nenhum delimitador foi especificado, ele toma o caráter de espaço como o delimitador padrão.
Nota importante: a função SPLIT
- VBA devolve uma lista que começa a partir da base 0.
- Quando o resultado da função de divisão é atribuído a um array, esse array deve ser declarado como um tipo de dados de cadeia de caracteres. Se você o declarar como um tipo de dados variante, ele irá mostrar um erro de tipo de desajustamento). No exemplo acima, note que eu declarei o resultado() como um tipo de dados de String.,
Exemplo 2 – conte o número de palavras numa frase
pode usar a função SPLIT para obter o número total de palavras numa frase. O truque aqui é contar o número de elementos no array que você recebe quando você divide o texto.
O código abaixo irá mostrar uma caixa de mensagem com a contagem de palavra:
Sub WordCount()Dim TextStrng As StringDim WordCount As IntegerDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result = Split(TextStrng)WordCount = UBound(Result()) + 1MsgBox "The Word Count is " & WordCountEnd Sub
neste caso, a função UBound nos diz que o limite superior da matriz (por exemplo, o número máximo de elementos a matriz tem)., Uma vez que a base do array é 0, 1 é adicionado para obter a contagem total de palavras.
Você pode usar um código semelhante para criar uma função personalizada em VBA que irá pegar o texto como entrada e retornar a contagem de palavras.
o código abaixo irá criar esta função:
uma vez criado, você pode usar a função WordCount assim como qualquer outra função regular.
Esta função também lida com espaços iniciais, finais e duplos entre palavras. Isto foi possível usando a função TRIM no código VBA.,
no caso de querer aprender mais sobre como esta fórmula funciona para contar o número de palavras numa frase ou querer aprender sobre uma forma não-VBA para obter a contagem de palavras, confira este tutorial.
exemplo 3-usando um delimitador diferente do caractere espaço
nos dois exemplos anteriores, nós só temos usado um argumento na função de divisão, e o resto foram os argumentos padrão.
Quando você usar algum outro delimitador, você precisa especificar isso na fórmula dividida.,
no código abaixo, a função SPLIT retorna um array baseado em uma vírgula como o delimitador, e então mostra uma mensagem com cada palavra em uma linha separada.
no código acima, eu usei o loop seguinte para passar por cada elemento da matriz de ‘resultado’ atribuí-lo à variável ‘DisplayText’.
exemplo 4-Divida um endereço em três partes
com a função de divisão, você pode especificar quantos números de parcelas você deseja obter. Por exemplo, se eu não especificar nada, cada instância do delimitador seria usado para dividir a string.,
mas se eu especificar 3 como o limite, então a cadeia será dividida em três partes apenas.
Por exemplo, se eu tiver o seguinte endereço:
2703 Winifred Way, Indianapolis, Indiana, 46204
posso usar a função dividida em VBA para dividir este endereço em três partes.
divide os dois primeiros com base no delimitador de vírgulas e a parte restante torna-se o terceiro elemento da matriz.,
o código abaixo mostraria o endereço em três linhas diferentes numa caixa de mensagens:
uma das utilizações práticas disto poderia ser quando você quiser dividir um único endereço de linha no formato mostrado na caixa de mensagens. Então você pode criar uma função personalizada que retorna o endereço dividido em três partes (com cada parte em uma nova linha).
o seguinte código faria isso:
Uma vez que você tenha este código no módulo, você pode usar a função (ThreePartAddress) no livro de trabalho, assim como qualquer outra função Excel.,
Esta função tem um argumento – a referência da célula que tem o endereço.
Note que para que o endereço resultante apareça em três linhas diferentes, você precisa aplicar o formato de mudança de linha de texto para as células (está na página inicial do grupo de alinhamento). Se o formato’ Wrap Text ‘ não estiver activo, irá ver o endereço inteiro como uma única linha.
exemplo 5-Obter o nome da cidade a partir do endereço
com a função dividida em VBA, você pode especificar qual parte da matriz resultante que você deseja usar.,
Por exemplo, suponha que eu estou dividindo o seguinte endereço com base no vírgula como delimitador:
2703 Winifred Way, Indianapolis, Indiana, 46204
A matriz resultante seria algo como mostrado abaixo:
{"2703 Winifred Way", "Indianapolis", "Indiana", "46204"}
uma vez que esta é uma matriz, eu posso escolher exibir ou retorno de uma parte específica desta matriz.
abaixo está um código para uma função personalizada, onde você pode especificar um número e ele irá retornar esse elemento da matriz. Por exemplo, se eu quiser o nome de Estado, Eu posso especificar 3 (Como é o terceiro elemento na matriz).,
a função acima leva dois argumentos, a referência da célula que tem o endereço e o número do elemento que você deseja retornar. A função Split divide os elementos de endereço e atribui-o para a variável resultado.
então ele retorna o número do elemento que você indicou como o segundo argumento. Note que uma vez que a base é 0, ElementNumber-1 é usado para devolver a parte correta do endereço.
No caso de você querer o nome da cidade, você pode usar 2 como o segundo argumento. No caso de você usar um número que é maior do que o número total de elementos, ele retornaria o valor#! erro.
Você pode simplificar ainda mais o código como mostrado abaixo:
no código acima, em vez de usar a variável resultado, ele só retorna o número de elemento especificado.
assim, se você se separou (“Bom Dia”) (0), ele só retornaria o primeiro elemento, que é”bom”.,
similarmente, no código acima, ele só retorna o número do elemento especificado.
Você também pode gostar dos seguintes tutoriais Excel:
- Excel VBA InStr função – explicado com exemplos.
- Como classificar dados no Excel usando VBA (um guia passo a passo).
- 7 coisas incríveis Excel texto para colunas pode fazer por você.
- Como obter a contagem de palavras no Excel.função de guarnição de VBA.