在 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,並用逗號分隔。但是,每個人可以擁有一到十個頭銜,而我的工作表中有數千名人員。

單獨與每個人合作是不可能的,所以我正在尋找最有效(或最簡單)的方法來實現這一目標:

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

該巨集尚未最佳化,但應該可以工作。

答案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)

將公式複製到各列中,以便相應的引用都有效。

我懷疑有些事情與資料透視表有關,可以以更清晰的方式做事 - 但不是我玩過的東西。

相關內容