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.
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