6 febrero, 2025

FUNCIÓN PARA SEPARAR TEXTO EN COLUMNAS CON DELIMITADORES. UDF DE MATRIZ DINÁMICA

Hola a todos:

Hace un par de días publiqué un post en el que creaba una UDF de matriz dinámica para separar un texto en columnas: FUNCIÓN PARA SEPARAR TEXTO EN COLUMNAS. UDF DE MATRIZ DINÁMICA

Para complementar ese post he decido programar otra UDF que pase un texto a columnas según un determinado delimitador, por ejemplo una coma «,» o un punto y coma «;».

Este post es de mucha utilidad, normalmente utilizamos la funcionalidad de texto en columnas de la ficha «Datos» de nuestra cinta de opciones en Excel, pero con la función resulta mucho más funcional y también se puede combinar con otras funciones.

Vamos con el ejemplo!:

Aquí tenemos varios casos de una cadena de texto con varios delimitadores (en realidad un delimitador es lo que tu hayas definido como tal). En el primer ejemplo estamos utilizando un asterisco «*».

Con nuestra función, que he denominado TEXTO_COLUMNAS_DEL vamos a pasar los datos a distintas columnas:

Siendo este el resultado:

Y con el resto de delimitadores sucederá lo mismo, lo único que debemos hacer es seleccionar el rango o celda con los datos, indicar el delimitador y aplicar la función.

Una de las fórmulas con la que podemos combinar esta función es transponer, para pasar los datos a una única columna y en varias celdas:

=TRANSPONER(TEXTO_COLUMNAS_DEL(A6;":"))

El código necesario es el siguiente:

Option Explicit
Function TEXTO_COLUMNAS_DEL(ByVal Target, delimitador)
'Definimos variables
    Dim i As Long, j As Long, nCadena As String, sCadena As String
    Dim miArray As Variant, Text_col As Variant, celda As Variant
    With ActiveSheet
        'Pasamos el rango seleccionado a una string
        For Each celda In Target
            sCadena = sCadena & celda
            Next celda
            'Creamos nueva cadena con separación por el delimitador
            Text_col = Split(Trim(sCadena), delimitador)
            'Pasamos la información a una matriz
            ReDim miArray(0 To UBound(Text_col))
            For j = 0 To UBound(Text_col)
                miArray(j) = Text_col(j)
                Next j
                'Pasamos resultado a la función
                TEXTO_COLUMNAS_DEL = miArray
            End With
        End Function

Cómo podéis observar es un código fácil de comprender y que demuestra se muy útil para determinados escenarios o situaciones.

Al igual que en el post anterior: Este procedimiento en versiones de Excel que no cuentan aún con la actualización que contiene las nuevas fórmulas de matriz dinámica se mostrará de manera distinta, es decir será necesario seleccionar el rango del resultado, seleccionar la fórmula y aplicar CTRL + MAYUS + ENTRAR.

Por otra parte, al igual que el resto de funciones de matriz dinámica, cuando hayamos guardado el libro y vuelto a abrirlo, para modificar estas fórmulas es necesario también seleccionar la fórmula y el rango y aplicar CTRL + MAYUS + ENTRAR, de lo contrario, como sabéis, no podremos modificar una matricial.

Y esto es todo. Espero que os haya resultado interesante y os sea de utilidad.

Descarga el archivo de ejemplo pulsando en:

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies