Excel에서 다양한 양의 행 병합

Excel에서 다양한 양의 행 병합

A다음과 같이 사람의 이름이 포함된 열과 B문제의 사람에 대한 직함이 포함된 열이 있는 거대한 워크시트가 있습니다 .

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

내 목표는 직함을 C쉼표로 구분하여 자체 열의 단일 행으로 병합하는 것입니다. 그러나 각 사람은 1~10개의 직함을 가질 수 있으며 워크시트에는 수천 명의 직원이 있습니다.

각 사람과 별도로 작업하는 것은 불가능하므로 이를 달성하기 위한 가장 효율적인(또는 가장 쉬운) 방법을 찾고 있습니다.

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

지금까지 저는 수식을 매우 효율적으로 복제하려고 시도한 적이 없습니다.

답변1

수식을 사용하여 이를 수행하는 방법을 모르지만 VBA를 사용해도 괜찮다면 다음과 같이 시도해 보십시오.

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

매크로는 최적화되지 않았지만 작동해야 합니다. For에서 1200 값을 처리하려는 줄 수로 변경하면 됩니다.

답변2

다소 투박한 솔루션:

작업 열(예: Column )을 사용하세요 D.

셀에는 D1다음 공식이 있습니다.

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

셀에 다음 수식이 있습니다 C1.

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

해당 참조가 모두 작동하도록 수식을 열 아래로 복사합니다.

나는 더 명확한 방식으로 작업을 수행하는 피벗 테이블과 관련이 있다고 생각합니다. 하지만 제가 사용해 본 것은 아닙니다.

관련 정보