Como concatenar en Excel varias celdas con condiciones

Tengo dos columnas en Excel, la celda A1 hay un número de expediente, y en la celda B1 hay el texto "Expediente". Luego, en las celdas de la columna B siguientes (B2, B3, B4) hay otros datos tipo texto que corresponden todos al expediente de la celda A1. Luego, en la celda A5 hay otro número de expediente y en la celda B5 hay el texto "Expediente", y luego en las celdas de la columna B siguientes (B6, B7, B8, B9, B10, B11, B12) hay otros datos tipo texto que corresponden todos al expediente de la celda A5.

Lo que quiero hacer es concatenar todas las celdas de la columna B que correspondan al mismo número de expediente en un sola, el problema es que los expedientes no tienen el mismo número de filas pero siempre coinciden en la misma fila un número de expediente en la columna A y la palabra "Expediente" de la columna B.

Por ejemplo:

A.                 B. 

125.             Expediente

                     Es de color azul. 

                     Viaje en coche

                     Volverá pronto

455.             Expediente

                     Monta en bici 

                     Es de color rosa

632.              Expediente

                      Azul

                      Amarillo

                      Verde

                      Azul

                      Rojo

                      Naranja

Vale, y lo que quiero hacer es que me aparezca esto concatenando las celdas de la columna B asi:

A.             B.

125          Expediente Es de color azul Viaja en                         coche. Volverá pronto 

455.          Expediente Monta en bici Es de color                      rosa

632. Azul Amarillo Verde Azul Rojo Naranja

1 respuesta

Respuesta
1

Este es el resultado de la macro, si es lo que buscas esta es la macro

 

Y esta es la macro

Option Base 1
Sub CONCATEN()
Set tabla = Range("A1").CurrentRegion
With tabla
    TFILAS = .Rows.Count
    CUENTA = WorksheetFunction.Count(.Columns(1))
    ReDim matriz(CUENTA, 2)
    For i = 1 To CUENTA
        If i = 1 Then .Cells(i, 1).Select
        If i > 1 Then ActiveCell.End(xlDown).Select
        FILA = ActiveCell.Row
        FILA2 = ActiveCell.End(xlDown).Row
        FILAS = FILA2 - FILA
        If FILAS < TFILAS Then FILAS = FILA2 - FILA
        If FILA2 > TFILAS Then FILAS = TFILAS - FILA + 1
        Set tabla2 = ActiveCell.Resize(FILAS, 2)
        For J = 1 To tabla2.Rows.Count
            If J = 1 Then texto = tabla2.Cells(J, 2)
            If J > 1 Then texto = texto & " " & tabla2.Cells(J, 2)
        Next J
        matriz(i, 1) = ActiveCell.Value
        matriz(i, 2) = texto
    Next i
     Range("d2").Resize(UBound(matriz), 2) = matriz
End With
Set tabla = Nothing: Set tabla2 = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas