VBA dividir cadena en matriz

Excel VBA dividir cadena en matriz

Una cadena es una colección de caracteres unidos, cuando estos caracteres se dividen y almacenan en una variable, esa variable se convierte en una matriz para estos caracteres y el método que usamos para dividir una cadena y convertirla en una matriz es mediante la función SPLIT en vba que divide la cadena en una cadena unidimensional.

Al igual que las hojas de trabajo en VBA, también tenemos funciones para manejar valores de cadena o texto. Estamos muy familiarizados con las operaciones de cadena como extraer el primer nombre, apellido, segundo nombre, etc. Pero, ¿qué tal la idea de dividir el valor de cadena en matrices en VBA? Sí, lo escuchó correctamente, podemos dividir la oración de cadena en una matriz utilizando la codificación VBA y en este artículo especial, le mostraremos cómo dividir la cadena en una matriz en Excel VBA.

¿Qué es dividir cadena en una matriz?

Permítanme aclarar esto primero, "String into Array" no es más que "diferentes partes de la oración o cadena se dividirán en varias partes". Por ejemplo, si la oración es "Bangalore es la ciudad capital de Karnataka", entonces cada palabra es una matriz diferente.

Entonces, cómo dividir esta oración en la matriz es el tema de este artículo.

¿Cómo convertir una cadena dividida en una matriz en Excel VBA?

Para convertir la cadena dividida en una matriz en VBA, tenemos una función llamada "SPLIT". Esta es una función de VBA que realiza la tarea de dividir el valor de cadena proporcionado en diferentes partes según el delimitador proporcionado.

Por ejemplo, si la oración es "Bangalore es la ciudad capital de Karnataka", el espacio es el delimitador entre cada palabra.

A continuación se muestra la sintaxis de la función SPLIT.

  • Valor o expresión: esta es la cadena o el valor de texto que estamos tratando de convertir en la matriz segregando cada parte de la cadena.
  • [Delimitador]: Esto no es más que las cosas comunes que separan cada palabra en la cadena. En nuestra oración "Bangalore es la ciudad capital de Karnataka", cada palabra está separada por un carácter de espacio, por lo que nuestro delimitador es el espacio aquí.
  • [Límite]: El límite no es más que la cantidad de piezas que queremos como resultado. Por ejemplo, en la oración "Bangalore es la ciudad capital de Karnataka", tenemos siete partes si solo necesitamos tres partes, entonces obtendremos la primera parte como "Bangalore", la segunda parte como "es" y la tercera parte como el resto de la oración es decir, "la ciudad capital de Karnataka".
  • [Compare]: Esto no se usa el 99% del tiempo, así que no toquemos esto en este momento.
Puede descargar esta plantilla de Excel de cadena dividida en matriz de VBA aquí - Plantilla de Excel de cadena dividida en matriz de VBA

Ejemplo 1

Ok, ahora veamos ejemplos prácticos.

Paso 1: Defina la variable VBA para contener el valor de la cadena.

Código:

 Sub String_To_Array () Dim StringValue As String End Sub 

Paso 2: Para esta variable, asigne la cadena "Bangalore es la ciudad capital de Karnataka".

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore es la capital de Karnatka" End Sub 

Paso 3: A continuación, defina una variable más que pueda contener cada parte del valor de cadena anterior. Sobre esto, debemos tener en cuenta que, dado que la oración tiene más de una palabra, debemos definir la variable como "Array" para contener más de un valor.

En este caso, tenemos 7 palabras en la cadena, así que defina la matriz de la siguiente manera.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore es la ciudad capital de Karnatka" Dim SingleValue () As String End Sub 

Ahora, para esta variable de matriz, usaremos la función SPLIT para dividir la cadena en una matriz en Excel VBA.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore es la ciudad capital de Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") End Sub 

La expresión es nuestro valor de cadena, es decir, la variable ya contiene el valor de cadena, así que ingrese solo el nombre de la variable.

El delimitador en esta cadena es un carácter de espacio, así que proporcione el mismo.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore es la ciudad capital de Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") End Sub 

A partir de ahora, deje otras partes de la función SPLIT.

La función SPLIT divide el valor de la cadena en 7 partes, cada palabra separada a expensas del carácter de espacio. Dado que hemos declarado la variable “SingleValue” como matriz, podemos asignar los 7 valores a esta variable.

Podemos escribir el código de la siguiente manera.

Código:

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

Ejecute el código y vea lo que obtenemos en el cuadro de mensaje.

A partir de ahora, podemos ver la primera palabra, es decir, "Bangalore" para mostrar más palabras, podemos escribir el código de la siguiente manera.

Código:

 Sub String_To_Array () Dim StringValue As String StringValue = "Bangalore es la ciudad 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 

Ahora ejecute el código y vea lo que aparece en el cuadro de mensaje.

Todas y cada una de las palabras se han dividido en matrices.

Ejemplo # 2

Ahora imagine una situación en la que se almacenan estos valores en celdas, es decir, cada palabra en una celda separada. Para esto, necesitamos incluir el bucle FOR NEXT en VBA.

El siguiente código insertará cada palabra en celdas separadas.

 Sub String_To_Array1 () Dim StringValue As String StringValue = "Bangalore es la ciudad capital de Karnataka" Dim SingleValue () As String SingleValue = Split (StringValue, "") Dim k As Integer For k = 1 To 7 Cells (1, k) .Value = SingleValue (k - 1) Siguiente k End Sub 

Esto insertará cada palabra como se muestra en la imagen de abajo.

Cosas para recordar

  • La matriz y los bucles se utilizan juntos para hacer que el código sea dinámico.
  • La función SPLIT requiere un delimitador común que separa cada palabra de la oración.
  • La longitud de la matriz comienza desde cero, no desde 1.