MACROS DE EXCEL

Concatenar con macros en Excel (macro)

Concatenar con macros en Excel (macro)

Concatenar con macros en Excel (macro)

¿Cómo podemos concatenar celdas generado por una macro en Excel?

La siguiente macro nos permite concatenar un rango de celdas (ya sea de selección múltiple o específico), aplicando una función predefinida de concatenado que se define dentro del módulo a crear. Dicha función puede ser CONCATENAR (anterior a Excel 2016) o CONCAT (posterior a Excel 2016).

La instrucción a copiar dentro de un nuevo módulo en la ventana de Visual Basic es la siguiente:

CONCATENAR CON MACROS EN EXCEL

Option Explicit

Sub ConcatConMacro()
    Call Concatenate_Formula(True, True)
End Sub

Sub Concatenate_Formula(bConcat As Boolean, bOptions As Boolean)

Dim rSelected As Range
Dim c As Range
Dim sArgs As String
Dim bCol As Boolean
Dim bRow As Boolean
Dim sArgSep As String
Dim sSeparator As String
Dim rOutput As Range
Dim vbAnswer As VbMsgBoxResult
Dim lTrim As Long
Dim sTitle As String

    Set rOutput = ActiveCell
    bCol = False
    bRow = False
    sSeparator = ""
    sTitle = IIf(bConcat, "Concatenar", "")
    
    On Error Resume Next
    Set rSelected = Application.InputBox(Prompt:= _
                    "Seleccionar celdas", _
                    Title:=sTitle & " celdas", Type:=8)
    On Error GoTo 0
    
    If Not rSelected Is Nothing Then
        
        sArgSep = IIf(bConcat, ",", "&")
        
        If bOptions Then
                
            sSeparator = Application.InputBox(Prompt:= _
                        "Definir delimitador, dejar en blanco para omitir.", _
                        Title:=sTitle & " celdas", Type:=2)
        
        End If
        
        For Each c In rSelected.Cells
            sArgs = sArgs & c.Address(bRow, bCol) & sArgSep
            If sSeparator <> "" Then
                sArgs = sArgs & Chr(34) & sSeparator & Chr(34) & sArgSep
            End If
        Next
        
        lTrim = IIf(sSeparator <> "", 4 + Len(sSeparator), 1)
        sArgs = Left(sArgs, Len(sArgs) - lTrim)

        If bConcat Then
            rOutput.Formula = "=CONCAT(" & sArgs & ")"
        Else
            rOutput.Formula = "=" & sArgs
        End If
        
    End If

End Sub


 

En este caso nombramos arbitrariamente a la macro con el nombre «ConcatConMacro» para su identificación, y utilizamos la función CONCAT para su resolución. (si deseamos reemplazar por CONCATENAR debemos reemplazar una sola instancia de CONCAT que aparece en las últimas líneas del código por CONCATENATE (en inglés).

De esta forma logramos concatenar celdas de forma rápida y fácil mediante macros en Excel.

 

Te recomiendo ver el siguiente link con más videos de Macros útiles de Excel AQUÍ.

¿No sabés como instalar esta macro? ¡No te preocupes!  Aquí está la solución:

Salvo aclaración, todas las fórmulas y macros de este sitio están configuradas para aplicarse sobre la celda A1. Algunas fórmulas se encuentran encerradas entre llaves {} debido a que son fórmulas matriciales. Estas llaves no deben introducirse tecleándolas, sino que se generan automáticamente al aceptar la fórmula pulsando Control+Shift+Enter al mismo tiempo. Las fórmulas de este sitio son compatibles con versiones de Microsoft Excel® 2010 o superiores.