¿Contatenar texto de un listado mediante una macro?

Para Dante Amor

Tengo un listado de terceros separados en apellidos y nombres, desearía su ayuda para encadenarlo en una celda determinada mediante una macro. El listado puede tener un registro o más de 1000 registros, de manera que el código deseado recorra desde la columna que identifica el apellido1 hasta el nombre2 y lo encadene en una columna aparte. Se que para ello esta la función contatenar o la fórmula ""&"", pero la idea es que lo haga mediante una macro.

2 Respuestas

Respuesta
1

Franciso Jaimes,

Proporciono macros para el desarrollo de tu consulta.

El primer código realiza la concatenación de apellidos y nombres de todos las filas

El segundo código limpia o borrar el contenido de los resultados obtenidos por el primer código.

Sub ConcatenarApellidosNombres()
Set Rango = Range(Range("L2"), Range("L2").End(xlDown))
With Rango
    For i = 2 To .Rows.Count
        Range("R" & i + 1) = .Cells(i, 2) & " " & .Cells(i, 3) & " " & .Cells(i, 4) & " " & .Cells(i, 5)
    Next i
End With
End Sub
Sub LimpiarConcatenar()
Set Rango = Range(Range("L3"), Range("L3").End(xlDown))
Range(Replace(Rango.Address, "L", "R")).ClearContents
End Sub

Funciona perfecto.

Es posible que se ejecute la concatenación de manera dinámica, es decir que se seleccione las columnas donde esta el la información a concatenar y ejecutar la macro en la columna subyacente al área seleccionada.

Francisco Jaimes,

Entonces puedes trabajarlo como una función de hoja de cálculo mediante una macro de tipo UDF (función definido por el usuario). El código de la nueva función UNIRCELDAS() es:

Function UNIRCELDAS(ByVal Rango As Range) As String
With Rango
ConcatenarCeldas = .Cells(1, 1) & " " & .Cells(1, 2) & " " & .Cells(1, 3) & " " & .Cells(1, 4)
End With
UNIRCELDAS = ConcatenarCeldas
End Function

Este código lo debes pegar en el módulo ThisWorkBook del editor de VBA, para que funcione correctamente. Ya en la hoja de cálculo lo puedes trabajar como cualquier función que se maneja en la celda, sólo debes escribir en cualquier celda  =UNIRCELDAS("M3:P3"), y listo se concatenar los valores del rango especificado.

Por favor no olvidar de valorar las respuestas.

Respuesta
1

Te anexo una macro para los eventos de tu hoja.

Cada vez que captures un dato en las columnas M a P, te pondrá la concatenación en la columna S

Private Sub Worksheet_Change(ByVal Target As Range)
    Set rango = Columns("M:P")
    If Not Intersect(Target, rango) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        col = rango.Cells(1, rango.Columns.Count).Column + 1
        i = Target.Row
        c = rango.Cells(1, 1).Column
        Cells(Target.Row, col).Value = Cells(i, c) & " " & Cells(i, c + 1) & " " & Cells(i, c + 2) & " " & Cells(i, c + 3)
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas