Actualización: Función EXCELeINFO CONCATENAR ahora omite celdas en blanco

Ésta función que les comparto es una de las que más uso en mis labores diarias, es por eso que procuro actualizarla constantemente. En esta ocasión y en base a un comentario de un visitante del Blog les comparto una actualización que contiene 2 cambios importantes:

  1. Si el rango seleccionado incluye celdas en blanco, éstas son omitidas del texto resultante.
  2. Ahora la función hace dos validaciones dependiendo de si se define un separador o no, para no causar conflictor en el texto resultante.

Cómo funciona

En este ejemplo la función es llamada EICONCATENAR y cuenta con dos parámetros:

  1. Rango: El conjunto de celdas que la función tomará para unir sus valores.
  2. Separador (opcional) : Caracter que se imprimirá entre cada palabra.

Al usar la función si deseamos podemos usar un caracter separador para que se imprima entre cada palabra, así como en la Figura 1.

image

Figura 1. Función EICONCATENAR con espacio como separador.

Pero como el separador es opcional, no lo usamos si no deseamos, como en la Figura 2.

image

Figura 2. Función EICONCATENAR sin separador.

Código vba de la función

Nombre UDF: EICONCATENAR

Ubicación: Módulo normal.

'---------------------------------------------------------------------------------------
' Module    : Módulo1
' Author    : MVP Excel, Sergio Alejandro Campos
' Date      : 12/01/2015
' Purpose   : Función UDF para concatenar contenido de celdas
'---------------------------------------------------------------------------------------
'
Function EICONCATENAR(Rango As Range, Optional Separador As Variant) As String
Dim t As String
Dim lenTexto As Integer
Application.Volatile
'
For Each Celda In Rango
    If Not IsEmpty(Celda.Value) Then
        If IsMissing(Separador) Then Separador = ""
        t = t & Separador & Celda.Value
    Else
    End If
    '
Next Celda
'
If Separador = "" Then
    '
    EICONCATENAR = t
    '
Else
    '
    lenTexto = Len(t)
    EICONCATENAR = Right(t, lenTexto - 1)
    '
End If
'
End Function

You may also like...

11 Responses

  1. Paco says:

    hola sergio, funciona perfecto y salta los blancos y permite eleguir el separador, pero esta version ya no permite concatenar celda No adyacentes cosa que si permitia la funciona inicial. Es decir si quiere concatenar este rango me da error C10:C12;A13:B13;B15:C15;B17:D17 pero en la anterior funcion si que funciona.
    No es posible solucionarlo?

  2. Paco says:

    hola sergio, funciona perfecto y salta los blancos y permite eleguir el separador, pero esta version ya no permite concatenar celda No adyacentes cosa que si permitia la funciona inicial. Es decir si quiere concatenar este rango me da error C10:C12;A13:B13;B15:C15;B17:D17 pero en la anterior funcion si que funciona.
    No es posible solucionarlo?

  3. Son dos funciones diferentes. Ésta que publico sólo permite elegir dos parámetros, que son el rango y el separador.

    La función con celdas adyacentes como no tiene un mínimo de parámetros para elegir rangos, no se puede elegir un separador.

    Es la de celdas adyacentes la que deseas que omita las celdas vacías ?

  4. Paco says:

    Genial, estaré atento. Gracias

  5. Son dos funciones diferentes. Ésta que publico sólo permite elegir dos parámetros, que son el rango y el separador.

    La función con celdas adyacentes como no tiene un mínimo de parámetros para elegir rangos, no se puede elegir un separador.

    Es la de celdas adyacentes la que deseas que omita las celdas vacías ?

  6. Paco says:

    Genial, estaré atento. Gracias

  7. Iñigo says:

    Tengo un problema, cuando exporto el excel de un formulario, cuando me contestan a las preguntas el programa en cuestión genera tantas columnas como resuestas posibles hay y solo rellena con el texto las que se han seleccionado, por ejemplo

    tipo de planes

    col1 Salir col2 Quedame en casa col3 Viajar
    si solo contestan a la tres debajo de esa columna rellena viajar dejando las otras dos columnas “en blanco” de manera que esta funcion me vendría genial si lo que quiero es concatenar varias opciones discriminando las no contestadas, ahora bien, NO LO HACE, porque parece ser que no esta en blanco esas cajas, en cuanto le doy a eliminar el contenido con tu formula lo hace correctamente, pero sino no. ¿existe alguna forma de saber que hay en esa celda que para excel no es nada pero en realidad si debe de tener algo?

    Gracias y no se si me he explicado

    Un saludo

  8. Iñigo says:

    Tengo un problema, cuando exporto el excel de un formulario, cuando me contestan a las preguntas el programa en cuestión genera tantas columnas como resuestas posibles hay y solo rellena con el texto las que se han seleccionado, por ejemplo

    tipo de planes

    col1 Salir col2 Quedame en casa col3 Viajar
    si solo contestan a la tres debajo de esa columna rellena viajar dejando las otras dos columnas “en blanco” de manera que esta funcion me vendría genial si lo que quiero es concatenar varias opciones discriminando las no contestadas, ahora bien, NO LO HACE, porque parece ser que no esta en blanco esas cajas, en cuanto le doy a eliminar el contenido con tu formula lo hace correctamente, pero sino no. ¿existe alguna forma de saber que hay en esa celda que para excel no es nada pero en realidad si debe de tener algo?

    Gracias y no se si me he explicado

    Un saludo

    • Hola.

      Te sugiero dos opciones para eliminar los “datos” de las celdas en blanco.

      1.- En el mismo EXCELeINFO eliges TEXTO > Eliminar espacios excesivos.
      2.- Eliges las celdas en blanco y eliges TEXTO > Reemplazar caracteres. Ahí seleccionas Espacios y Saltos de línea.

Leave a Reply

Your email address will not be published.

%d bloggers like this: