VBA Split String into Array

Excel VBA dividir string em matriz

Uma string é uma coleção de caracteres unidos, quando esses caracteres são divididos e armazenados em uma variável, então essa variável se torna uma matriz para esses caracteres e o método que usamos para dividir uma string para torná-la uma matriz é usando a função SPLIT em vba que divide a corda em uma corda unidimensional.

Como planilhas no VBA, também temos funções para lidar com valores de String ou Texto. Estamos muito familiarizados com as operações de string, como extrair o primeiro nome, sobrenome, nome do meio, etc. Mas que tal a ideia de dividir o valor da string em matrizes no VBA? Sim, você ouviu corretamente, podemos dividir a frase da string em array usando a codificação VBA e neste artigo especial, mostraremos como dividir a string em uma matriz no Excel VBA.

O que é Split String into an Array?

Deixe-me esclarecer isso primeiro, “String into Array” nada mais é que “partes diferentes da frase ou string serão divididas em várias partes”. Por exemplo, se a frase for “Bangalore é a capital de Karnataka”, cada palavra é uma matriz diferente.

Portanto, como dividir essa frase em uma matriz é o tópico deste artigo.

Como converter string dividida em matriz no Excel VBA?

Para converter a string dividida em um array em VBA, temos uma função chamada “SPLIT”. Esta é uma função VBA que executa a tarefa de dividir o valor da string fornecida em diferentes partes com base no delimitador fornecido.

Por exemplo, se a frase for “Bangalore é a capital de Karnataka”, o espaço é o delimitador entre cada palavra.

Abaixo está a sintaxe da função SPLIT.

  • Valor ou Expressão: é a string ou valor de texto que estamos tentando converter para a matriz, segregando cada parte da string.
  • [Delimitador]: Isso nada mais é do que as coisas comuns que separam cada palavra na string. Em nossa frase “Bangalore é a capital de Karnataka”, cada palavra separada por um caractere de espaço, portanto, nosso delimitador é o espaço aqui.
  • [Limite]: Limite nada mais é do que quantas peças queremos como resultado. Por exemplo, na frase "Bangalore é a capital de Karnataka", temos sete partes, se precisarmos de apenas três partes, obteremos a primeira parte como "Bangalore", a segunda parte como "é" e a terceira parte como o resto a frase, ou seja, “a capital de Karnataka”.
  • [Compare]: Isso não é usado 99% do tempo, portanto, não vamos mexer nisso neste momento.
Você pode baixar este modelo VBA Split String em Array Excel aqui - VBA Split String em Array Excel Template

Exemplo 1

Ok, agora vamos ver exemplos práticos.

Etapa 1: Defina a variável VBA para conter o valor da string.

Código:

 Sub String_To_Array () Dim StringValue As String End Sub 

Etapa 2: para esta variável, atribua a string “Bangalore é a capital de Karnataka”.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore é a capital de Karnatka" End Sub 

Etapa 3: Em seguida, defina mais uma variável que pode conter cada parte do valor da string acima. Sobre isso, precisamos ter em mente que, uma vez que a frase tem mais de uma palavra, precisamos definir a variável como “Array” para conter mais de um valor.

Nesse caso, temos 7 palavras na string, portanto, defina o array como segue.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore é a capital de Karnatka" Dim SingleValue () As String End Sub 

Agora, para esta variável de array, usaremos a função SPLIT para dividir a string em um array no Excel VBA.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore é a capital de Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") End Sub 

A expressão é o nosso valor de string, ou seja, a variável já contém o valor de string, portanto, insira apenas o nome da variável.

O delimitador nesta string é um caractere de espaço, então forneça o mesmo.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore é a capital de Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") End Sub 

A partir de agora, deixe outras partes da função SPLIT.

A função SPLIT divide o valor da string em 7 partes, cada palavra segregada em detrimento do caractere de espaço. Visto que declaramos a variável “SingleValue” como array, podemos atribuir todos os 7 valores a esta variável.

Podemos escrever o código da seguinte maneira.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore é a capital de Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") MsgBox SingleValue (0) End Sub 

Execute o código e veja o que temos na caixa de mensagem.

A partir de agora, podemos ver a primeira palavra, ou seja, “Bangalore” para mostrar outras palavras, podemos escrever o código como segue.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore é a capital de Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") MsgBox SingleValue (0) & vbNewLine & SingleValue (1) & vbNewLine & SingleValue (2) & vbNewLine & SingleValue (3) & _vbNewLine & SingleValue (4) & vbNewLine & SingleValue (5) & vbNewLine & SingleValue (6) End Sub 

Agora execute o código e veja o que temos na caixa de mensagem.

Cada palavra foi dividida em matrizes.

Exemplo # 2

Agora imagine uma situação de armazenamento desses valores em células, ou seja, cada palavra em uma célula separada. Para isso, precisamos incluir o loop FOR NEXT no VBA.

O código abaixo irá inserir cada palavra em células separadas.

 Sub String_To_Array1 () Dim StringValue As String StringValue = "Bangalore é a capital de Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") Dim k As Integer Para k = 1 a 7 células (1, k) .Value = SingleValue (k - 1) Próximo k End Sub 

Isso irá inserir cada palavra conforme mostrado na imagem abaixo.

Coisas para lembrar

  • Array e loops são usados ​​juntos para tornar o código dinâmico.
  • A função SPLIT requer um delimitador comum que separa cada palavra da frase.
  • O comprimento da matriz começa em zero, não em 1.