Funcion Concatenado Excel

Por Héctor Miguel Orozco Díaz

Función Concatenado
Dos procedimientos, uno de los cuales repite un bucle tantas veces como celdas tengamos a unir o concatenar:
- Procedimiento de Repetición de Bucle
- Procedimiento de una sola pasada
1
Repeticion de Bucle
Function ConcatenarCeldas(Celdas As Range, _ Optional Separa As String = " ") As String Dim Celda As Range, Final As String For Each Celda In Celdas Final = Final & IIf(Len(Final), Separa, "") & Celda Next: ConcatenarCeldas = Final: End Function
Otro procedimiento con la misma función pero..... haciendo una sola pasada
'De Héctor Miguel Orozco Díaz
Function Concatenado(Datos As Range, _
Optional xColumnas As Boolean = False, _
Optional Separa As String = " ") As String
With Application: Concatenado = Join(IIf(xColumnas, _
.Transpose(.Transpose(Datos)), .Transpose(Datos)), Separa): End With: End Function
Se tiene queindicar si el rango es vertical… (p.e. B5:B50) o la concatenación sera por filas en una columna (p.e. B5:Q5) usando el argumento xColumnas (opcional y por omisión falso) y si se piensa utilizar en xl-97 (VBA5) que no tiene la función Join(obviamente) habría que proveerla usando compilación de VBA6 y esta seria la estructura del código (AL INICIO DE UN MODULO) >>Compilación para XL-97
Compilación para XL-97
Option Private Module
#If Not VBA6 Then
Function Replace(ByVal Texto As String, Busca As String, Reemplaza As String) As Variant
Replace = Application.Substitute(Texto, Busca, Reemplaza): End Function
Function Split(Cadena As String, Delimitador As String) As Variant
Split = Evaluate("{""" & Application.Substitute(Cadena, Delimitador, """,""") & """}"): End Function
Function Join(Matriz, Optional Separa As String) As String
Dim Texto As String, Sig As Integer: On Error GoTo Join_error
If VarType(Matriz) >= vbArray Then
Texto = Matriz(LBound(Matriz))
If UBound(Matriz) Then
For Sig = LBound(Matriz) + 1 To UBound(Matriz)
Texto = Texto & IIf(Len(Separa), Separa, "") & Matriz(Sig)
Next: End If: Join = Texto
Else: Join = CStr(Matriz)
End If: Exit Function
Join_error:
If Err.Number <> 0 Then Join = Err.Description
End Function
#End If
Ver artículo → Ribbon (Cinta de opciones)-Barras de Herramientas Excel 97-2007