Combinar cantidad variable de filas en Excel

0

Tengo una enorme hoja de trabajo con una columna que Acontiene el nombre de una persona y una columna Bcon títulos de trabajo para 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 trabajo 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 lograr esto:

------------------------------------------------------------------------------------------------------------------------------------------
| 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 tratando de duplicar fórmulas de manera muy eficiente.

lapingultah
fuente

Respuestas:

0

No sé cómo hacerlo 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 eso debería funcionar. En For, simplemente cambie el valor 1200 al número de línea que desea procesar.

Matthieu Mabillard
fuente
No tengo conocimiento de las macros de Excel, pero esto funcionó, ¡gracias!
lapingultah
0

Una solución bastante torpe:

Use 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 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.

Andrés
fuente