UDF CONCATENAR con parámetros infinitos y celdas no adyacentes en Excel

En esta ocasión les comparto el rediseño de la función personalizada CONCATENAR, con mejoras sustanciales que la hacen más efectiva.

Qué hay de nuevo

Como lo dije anteriormente, esta función sufre un rediseño en su estructura haciéndola más dinámica.

El primer cambio es que el separador por defecto será el espacio, ya que la función permitirá parámetros infinitos, tal como la función SUMA.

La otra mejora es que las celdas a concatenar ya no están forzadas a que sean adyacentes y se podrán concatenar con texto fijo o fórmulas.

La siguiente imagen muestra un ejemplo de la función.

UDF EICONCATENER en Excel

Figura 1. UDF EICONCATENAR con parámetros infinitos

Código de la función

El siguiente código deberá ir en un módulo normal. Puedes seguir este link para tener conocer más sobre funciones UDF.

'Código basado en la función MySum de John Walkenbach
'
Function EICONCATENAR(ParamArray argumentos() As Variant) As Variant
' Declaración de variables
Dim i As Variant
Dim RangoTemporal As Range, Celda As Range
Dim m, n
'
Application.Volatile
'
' Se procesa cada argumento
For i = 0 To UBound(argumentos)
    ' Se salta argumentos faltantes
    If Not IsMissing(argumentos(i)) Then
        ' Analiza los tipos de argumentos
        Select Case TypeName(argumentos(i))
        Case "Range"
            ' Se crea un rango temporal para manejar rangos completos de filas o columnas
            Set RangoTemporal = Intersect(argumentos(i).Parent.UsedRange, argumentos(i))
            For Each Celda In RangoTemporal
                EICONCATENAR = EICONCATENAR & " " & Celda
            Next Celda
        Case Else
            EICONCATENAR = EICONCATENAR & " " & argumentos(i)
        End Select
    End If
Next i
'
End Function

You may also like...