Variable Zeilenanzahl in Excel zusammenführen

Variable Zeilenanzahl in Excel zusammenführen

Ich habe ein riesiges Arbeitsblatt mit einer Spalte, Adie den Namen einer Person enthält, und einer Spalte, Bdie die Berufsbezeichnungen der betreffenden Person enthält, wie folgt:

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

Mein Ziel ist es, die Berufsbezeichnungen in einer einzigen Zeile in einer eigenen Spalte zusammenzuführen C, getrennt durch ein Komma. Allerdings kann jede Person zwischen einer und zehn Berufsbezeichnungen haben, und ich habe Tausende von Mitarbeitern im Arbeitsblatt.

Da es nicht in Frage kommt, mit jeder Person einzeln zu arbeiten, suche ich nach der effizientesten (oder einfachsten) Möglichkeit, dies zu erreichen:

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

Bisher hatte ich bei meinen Versuchen, Formeln sehr effizient zu duplizieren, kein Glück.

Antwort1

Ich weiß nicht, wie das mit einer Formel geht, aber wenn es für Sie kein Problem ist, VBA zu verwenden, versuchen Sie es mit etwas wie dem Folgenden:

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

Das Makro ist nicht optimiert, aber es sollte funktionieren. Ändern Sie im „For“ einfach den Wert 1200 in die Anzahl der Zeilen, die Sie verarbeiten möchten.

Antwort2

Eine ziemlich klobige Lösung:

Verwenden Sie eine Arbeitsspalte, z. B. Spalte D.

In der Zelle D1steht folgende Formel:

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

Die Zelle muss die folgende Formel haben C1:

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

Kopieren Sie die Formel in die Spalten, damit die jeweiligen Bezüge alle funktionieren.

Ich vermute, dass es mit Pivot-Tabellen Möglichkeiten gibt, die Dinge klarer zu regeln, aber ich habe damit noch nicht herumexperimentiert.

verwandte Informationen