Cuando se trabaja con VBA en Excel, es posible que tenga la necesidad de dividir una cadena en diferentes partes basadas en un delimitador.
por ejemplo, si tiene una dirección, puede usar la función VBA Split para obtener diferentes partes de la dirección que están separadas por una coma (que sería el delimitador en este caso).
SPLIT es una función de cadena incorporada en Excel VBA que puede usar para dividir una cadena de texto basada en el delimitador.,
este Tutorial cubre:
Excel VBA SPLIT Function – Syntax
Split ( Expression, , , )
- Expression: esta es la cadena que desea dividir en función del delimitador. Por ejemplo, en el caso del ejemplo de dirección, la dirección completa sería la ‘expresión’. En caso de que se trate de una cadena de longitud cero ( «» ), la función SPLIT devolvería una matriz vacía.
- Delimiter: Este es un argumento opcional. Este es el delimitador que se usa para dividir el argumento ‘Expression’., En el caso de nuestro ejemplo de dirección, una coma es un delimitador que se utiliza para dividir la dirección en diferentes partes. Si no especifica este argumento, un carácter de espacio se considera el delimitador predeterminado. En caso de dar una cadena de longitud cero ( «» ), la cadena de expresión completa es devuelta por la función.
- Limit: este es un argumento opcional. Aquí especifica el número total de subcadenas que desea devolver. Por ejemplo, si solo desea devolver las tres primeras subcadenas del argumento ‘Expression’, esto sería 3., Si no especifica este argumento, el valor predeterminado es -1, que devuelve todas las subcadenas.
- Compare: este es un argumento opcional. Aquí especifica el tipo de comparación que desea que realice la función SPLIT al evaluar las subcadenas. Las siguientes opciones están disponibles:
- Cuando Compare es 0: Esta es una comparación binaria. Esto significa que si su delimitador es una cadena de texto (digamos ABC), entonces esto sería sensible a mayúsculas y minúsculas. ‘ABC’ no sería igual a ‘abc’.
- Cuando comparar es 1: Esta es una comparación de texto., Esto significa que si su delimitador es una cadena de texto (digamos ABC), entonces incluso si tiene ‘abc’ en la cadena de ‘expresión’, se consideraría como un delimitador.
ahora que hemos cubierto los conceptos básicos de la función SPLIT, veamos algunos ejemplos prácticos.
ejemplo 1 – dividir las palabras en una oración
supongamos que tengo el texto- «El zorro marrón rápido salta sobre el perro perezoso».
Puedo usar la función SPLIT para obtener cada palabra de esta oración como un elemento separado en una matriz.,
el siguiente código sería para esto:
Sub SplitWords()Dim TextStrng As StringDim Result() As StringTextStrng = "The Quick Brown Fox Jumps Over The Lazy Dog"Result() = Split(TextStrng)End Sub
mientras que el código no hace nada útil, le ayudará a entender lo que hace la función de división en VBA.
Split la función divide la cadena de texto y asigna cada palabra a la matriz de resultados.
así que en este caso:
- Result(0) almacena el valor «The»
- Result(1) almacena el valor «Quick»
- Result(2) almacena el valor «Brown» y así sucesivamente.
en este ejemplo, solo hemos especificado el primer argumento – que es el texto a dividir., Dado que no se ha especificado ningún delimitador, toma el carácter de espacio como delimitador predeterminado.
Nota importante:
- La función VBA SPLIT devuelve una matriz que comienza desde la base 0.
- Cuando el resultado de la función SPLIT se asigna a una matriz, esa matriz debe declararse como un tipo de datos de cadena. Si lo declara como un tipo de datos variante, mostrará un error de desajuste de tipo). En el ejemplo anterior, tenga en cuenta que he declarado Result() como un tipo de datos de cadena.,
Ejemplo 2-cuente el número de palabras en una oración
puede usar la función Dividir para obtener el número total de palabras en una oración. El truco aquí es contar el número de elementos en la matriz que se obtiene cuando se divide el texto.
el siguiente código mostraría un cuadro de mensaje con el número de palabras:
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
en este caso, la función UBound nos indica el límite superior del array (es decir, el número máximo de elementos que tiene el array)., Dado que la base de la matriz es 0, se agrega 1 para obtener el recuento total de palabras.
Puede usar un código similar para crear una función personalizada en VBA que tomará el texto como entrada y devolverá el recuento de palabras.
el siguiente código creará esta función:
una vez creada, puede usar la función WordCount como cualquier otra función regular.
Esta función también se encarga de dirigir, cola y doble espacio entre palabras. Esto ha sido posible mediante el uso de la función TRIM en el código VBA.,
en caso de que desee obtener más información sobre cómo funciona esta fórmula para contar el número de palabras en una oración o desee aprender sobre una forma de fórmula no VBA para obtener el recuento de palabras, consulte este tutorial.
Ejemplo 3-usando un delimitador que no sea el carácter de espacio
en los dos ejemplos anteriores, solo hemos utilizado un argumento en la función SPLIT, y el resto fueron los argumentos predeterminados.
Cuando utiliza algún otro delimitador, debe especificarlo en la fórmula dividida.,
en el siguiente código, la función Dividir devuelve una matriz basada en una coma como delimitador, y luego muestra un mensaje con cada palabra en una línea separada.
en el código anterior, he utilizado el bucle For Next para ir a través de cada elemento de la matriz ‘Result’ asignarlo a la variable ‘DisplayText’.
Ejemplo 4-Dividir una dirección en tres partes
con la función Dividir, puede especificar cuántos números de divisiones desea obtener. Por ejemplo, si no especifico nada, cada instancia del delimitador se usaría para dividir la cadena.,
pero si especifico 3 como límite, entonces la cadena se dividirá en tres partes solamente.
Por ejemplo, si tengo la siguiente dirección:
2703 Winifred Way, Indianapolis, Indiana, 46204
puedo usar la función Split en VBA para dividir esta dirección en tres partes.
divide los dos primeros en función del delimitador de comas y la parte restante se convierte en el tercer elemento de la matriz.,
el siguiente código mostraría la dirección en tres líneas diferentes en un cuadro de mensaje:
uno de los usos prácticos de esto podría ser cuando desea dividir una sola dirección de línea en el formato que se muestra en el cuadro de mensaje. A continuación, puede crear una función personalizada que devuelve la dirección dividida en tres partes (con cada parte en una nueva línea).
el siguiente código haría esto:
una vez que tenga este código en el módulo, puede usar la función (ThreePartAddress) en el libro de trabajo como cualquier otra función de Excel.,
Esta función toma un argumento – la referencia de la celda que tiene la dirección.
tenga en cuenta que para que la dirección resultante aparezca en tres líneas diferentes, debe aplicar el formato de texto de ajuste a las celdas (está en la pestaña Inicio en el grupo alineación). Si el formato ‘Ajustar texto’ no está habilitado, verá toda la dirección como una sola línea.
ejemplo 5-obtenga el nombre de la ciudad de la dirección
con la función dividir en VBA, puede especificar qué parte de la matriz resultante desea usar.,
por ejemplo, supongamos que estoy dividiendo la siguiente dirección en función de la coma como delimitador:
2703 Winifred Way, Indianapolis, Indiana, 46204
el array resultante se vería como se muestra a continuación:
{"2703 Winifred Way", "Indianapolis", "Indiana", "46204"}
dado que este es un array, puedo elegir mostrar o devolver una parte específica de este array.
a continuación se muestra un código para una función personalizada, donde puede especificar un número y devolverá ese elemento de la matriz. Por ejemplo, si quiero el nombre del estado, puedo especificar 3 (ya que es el tercer elemento de la matriz).,
la función anterior toma dos argumentos, La referencia de celda que tiene la dirección y el número de elemento que desea devolver. La función Split divide los elementos address y los asigna a la variable Result.
luego devuelve el número de elemento que especificó como segundo argumento. Tenga en cuenta que como la base es 0, ElementNumber-1 se utiliza para devolver la parte correcta de la dirección.
en caso de que desee el nombre de la ciudad, puede usar 2 como segundo argumento. En caso de utilizar un número que es mayor que el número total de elementos, devolvería el valor#! error.
puede simplificar aún más el código como se muestra a continuación:
en el código anterior, en lugar de usar la variable Result, solo devuelve el número de elemento especificado.
así que si has dividido («Buenos Días») (0), solo devolvería el primer elemento, que es «bueno».,
del mismo modo, en el código anterior, solo devuelve el número de elemento especificado.
También puede que le gusten los siguientes tutoriales de Excel:
- Función Excel VBA InStr-explicada con ejemplos.
- Cómo ordenar los datos en Excel usando VBA (una guía paso a paso).
- 7 cosas increíbles que Excel Text To Columns puede hacer por ti.
- Cómo obtener el recuento de palabras en Excel.
- Función de recorte de VBA.