Fusionar cantidad variable de filas en Excel

Fusionar cantidad variable de filas en Excel

Tengo una hoja de trabajo enorme con una columna Aque contiene el nombre de una persona y una columna Bque contiene los puestos de trabajo de la persona en cuestión, como esta:

--------------------------------------------
| Column A       | Column B                |
|-------------------------------------------
| John Doe       | CEO                     |
|                | CIO                     |
|                | CTO                     |
| Frank Black    | General Manager         |
|                | HR Manager              |
| Tabitha White  | Payroll specialist      |
| Jane Doe       | General Supervisor      |
|                | Superintendent          |
|                | Building maintenance    |
|                | System administrator    |
|                | IT specialist           |
--------------------------------------------

Mi objetivo es fusionar los títulos de los trabajos en una sola fila en su propia columna C, separados por una coma. Sin embargo, cada persona puede tener entre uno y diez títulos y tengo miles de personas en la hoja de trabajo.

Trabajar con cada persona por separado está fuera de discusión, por lo que estoy buscando la forma más eficiente (o más fácil) de lograrlo:

------------------------------------------------------------------------------------------------------------------------------------------
| Column A       | Column B              | Column C                                                                                      |
|----------------------------------------------------------------------------------------------------------------------------------------|
| John Doe       | CEO                   | CEO, CIO, CTO                                                                                 |
|                | CIO                   |                                                                                               |
|                | CTO                   |                                                                                               |
| Frank Black    | General Manager       | General Manager, HR Manager                                                                   |
|                | HR Manager            |                                                                                               |
| Tabitha White  | Payroll specialist    | Payroll specialist                                                                            |
| Jane Doe       | General Supervisor    | General Supervisor, Superintendent, Building Maintenance, System administrator, IT specialist |
|                | Superintendent        |                                                                                               |
|                | Building maintenance  |                                                                                               |
|                | System administrator  |                                                                                               |
|                | IT specialist         |                                                                                               |
------------------------------------------------------------------------------------------------------------------------------------------

Hasta ahora no he tenido suerte al intentar duplicar fórmulas de manera muy eficiente.

Respuesta1

No sé cómo hacer eso con la fórmula, pero si está bien usar VBA, intente algo como esto:

Sub newMacro()
    Dim i As Integer
    Dim posName As Integer
    Dim val As String

    val = Cells(1, 2).Value
    posName = 1

    For i = 2 To 1200
        If IsEmpty(Cells(i, 1)) Then
            val = val + "," + Cells(i, 2).Value
        Else
            Cells(posName, 3).Value = val

            val = Cells(i, 2).Value
            posName = i
        End If
    Next
End Sub

La macro no está optimizada, pero debería funcionar. En For, simplemente cambie el valor 1200 al número de línea que desea procesar.

Respuesta2

Una solución bastante torpe:

Utilice una columna de trabajo, por ejemplo, Columna D.

En la celda D1tenemos la siguiente fórmula:

=IF(A1="",
IF(A2="",IF(D2="",B1,CONCATENATE(B1,", ",D2)),B1),
IF(A2="",IF(D2="",B1,CONCATENATE(B1,", ",D2)),B1)
)

Tenga la siguiente fórmula en la celda C1:

=IF(A1="","",D1)

Copie la fórmula en las columnas para que todas las referencias respectivas funcionen.

Sospecho que hay cosas que hacer con las tablas dinámicas que hacen las cosas de una manera más clara, aunque no es algo con lo que haya jugado.

información relacionada