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)
해당 참조가 모두 작동하도록 수식을 열 아래로 복사합니다.
나는 더 명확한 방식으로 작업을 수행하는 피벗 테이블과 관련이 있다고 생각합니다. 하지만 제가 사용해 본 것은 아닙니다.