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
Excelente como siempre, gracias Sergio.
Esta funcion llamo mi atencion por la habilidad de poder concatenar rangos discontinups, texto… pero tiene una desventaja la cual es que el separador es un espacio y si yo quisiera agregar mi separador entre cadenas? Tuve la oportunidad de probar esta funcion concatenando 35 mil registros, cada uno compuesto de 10 columnas, y tardaba siglos, mas aun que al ser una funcion volatil al hacer un cambio en una celda otra vez se vuelve a recalcular o definitiva,ente ya es mi equipo de computo el que esta obsoleto, saludos!
Hola Sergio; uso esta funcion continuamente y solo echo de menos que no concatene las celdas vacias. si selecciono A1:C3 pero C2 = “” que solo me junto A1 con C3 (pk tb junto C2 pese a que este vacio con “, ,”)
he intentado hacerlo yo pero no lo consigo
Muy pronto esta función tendrá mejoras. Lo que comentas es una de esas.
Estate al pendiente.
Estare pendiente, eso seguro. Tus post son de los poco que leo siempre. Gracias.