Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: auf mehrere Zeilen aufteilen

auf mehrere Zeilen aufteilen
17.08.2017 14:15:14
Kisska
Hallo zusammen,
ich brauche eure Hilfe bei der Erweiterung dieses VBA-Codes:
http://www.excel-ist-sexy.de/mehrzeiler-in-1-zelle-aufteilen/
Ich habe folgende Tabelle vorliegen:
A B C D
In Zeile 1
... unter A steht der Name
... unter B steht Wohnort
... unter C steht Hobbies
... unter D steht Geburtstag
Die Einträge in den Spalten A,B und D sind eindeutig. In der Spalte C gibt es mehrere Einträge, die mit einem Komma und einem Leerzeichen voneinander getrennt sind.
Ich möchte nun meine Tabelle so umwandeln, dass es keine mehrere Einträge pro Zelle gibt.
Beispiel:
2. Katja | München | Kochen, Zeichnen | 10.03.1980
3. Peter | Berlin | Tennis, Lesen | 02.04.1975
Soll werden:
2. Katja | München | Kochen | 10.03.1980
3. Katja | München | Zeichnen | 10.03.1980
4. Peter | Berlin | Tennis | 02.04.1975
5. Peter | Berlin | Lesen | 02.04.1975
In diesem Beispiel haben Katja und Peter jeweils zwei Hobbies. Mittels VBA soll automatisch erkannt werden, wo mehrere Einträge in der Spalte C gibt und diese dann ggf. aufteilen. Die anderen Zell-Inhalte sollen einfach dupliziert werden.
Im Beispiel wurde Zeile 3 eingefügt und der zweite Eintrag in C3 übertragen, die anderen Inhalte aus A2,B2 und D2 wurden einfach nach unten kopiert. Analog für Peter.
In dem Link (s.o.) werden die Zellen mit mehreren Einträgen aufgeteilt. Was dem Code noch fehlt sind a) selbstständig neue Zeilen einzufügen, wo es notwendig ist und b) die eindeutigen Werte rüberkopieren
Kann mir jemand helfen, den Code zu erweitern oder gerne auch einen alternativen Code vorschlagen?
Viele Grüße
Kisska
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hier ein Beispiel für Dich...
17.08.2017 15:42:15
Michael
Kisska,
https://www.herber.de/bbs/user/115540.xlsm
Probier's aus, einfach die Schaltfläche auf dem Tabellenblatt "Daten" betätigen. Siehe auch die Kommentare im Code (bzgl. Anpassungen). Kommst Du damit zurecht?
LG
Michael
Anzeige
AW: Hier ein Beispiel für Dich...
17.08.2017 22:45:04
Christian
... und noch eins :-)
Sub Splitten()
Dim Coll As Collection
Set Coll = New Collection
' Einlesen auf Tabellenblatt1
With ThisWorkbook.Worksheets("Tabelle1")
Dim oRow As Variant
For Each oRow In .Cells(1, 1).CurrentRegion.Rows
Dim x As Variant
x = Split(oRow.Cells(1, 3), ",")
Dim i As Integer
For i = LBound(x) To UBound(x)
Dim y(3) As Variant
' Name
y(0) = oRow.Cells(1, 1)
' Ort
y(1) = oRow.Cells(1, 2)
' Hobby
y(2) = Trim(x(i))
' Datum
y(3) = oRow.Cells(1, 4)
Coll.Add y
Next i
Next oRow
End With
' Ausgabe auf Tabellenblatt 2
With ThisWorkbook.Worksheets("Tabelle2")
For i = 1 To Coll.Count
.Range(.Cells(i, 1), .Cells(i, 4)) = Coll.Item(i)
Next i
End With
End Sub
Viel Spaß beim Analysieren und Testen der Vorschläge!
VG, Ch.
Anzeige
2 Lösungen + 0 Feedback = 100% enttäuschend, owT
21.08.2017 09:08:25
Michael

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel: Eine Zelle in mehrere Zeilen aufteilen


Schritt-für-Schritt-Anleitung

Um in Excel eine Zelle in mehrere Zeilen aufzuteilen, kannst du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung zur Umsetzung:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne dein bestehendes.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub Splitten()
       Dim Coll As Collection
       Set Coll = New Collection
       ' Einlesen auf Tabellenblatt1
       With ThisWorkbook.Worksheets("Tabelle1")
           Dim oRow As Variant
           For Each oRow In .Cells(1, 1).CurrentRegion.Rows
               Dim x As Variant
               x = Split(oRow.Cells(1, 3), ",")
               Dim i As Integer
               For i = LBound(x) To UBound(x)
                   Dim y(3) As Variant
                   ' Name
                   y(0) = oRow.Cells(1, 1)
                   ' Ort
                   y(1) = oRow.Cells(1, 2)
                   ' Hobby
                   y(2) = Trim(x(i))
                   ' Datum
                   y(3) = oRow.Cells(1, 4)
                   Coll.Add y
               Next i
           Next oRow
       End With
       ' Ausgabe auf Tabellenblatt 2
       With ThisWorkbook.Worksheets("Tabelle2")
           For i = 1 To Coll.Count
               .Range(.Cells(i, 1), .Cells(i, 4)) = Coll.Item(i)
           Next i
       End With
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle Splitten und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Der Index liegt außerhalb des zulässigen Bereichs."

    • Lösung: Überprüfe, ob die Arbeitsblätter „Tabelle1“ und „Tabelle2“ in deinem Workbook vorhanden sind.
  • Fehler: Makro funktioniert nicht oder gibt keine Ergebnisse zurück.

    • Lösung: Stelle sicher, dass die Zelle in Spalte C tatsächlich mehrere Einträge enthält, die durch ein Komma getrennt sind.

Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du die Funktion „Text in Spalten“ nutzen:

  1. Markiere die Zelle oder die Spalte, die die Daten enthält.
  2. Gehe zu Daten > Text in Spalten.
  3. Wähle Getrennt und klicke auf Weiter.
  4. Setze das Häkchen bei Komma und klicke auf Fertig stellen.

Diese Methode eignet sich jedoch nicht für das Aufteilen in mehrere Zeilen, sondern erstellt neue Spalten.


Praktische Beispiele

Angenommen, du hast folgende Daten in „Tabelle1“:

Name Wohnort Hobbies Geburtstag
Katja München Kochen, Zeichnen 10.03.1980
Peter Berlin Tennis, Lesen 02.04.1975

Nach Ausführung des Makros wird „Tabelle2“ wie folgt aussehen:

Name Wohnort Hobbies Geburtstag
Katja München Kochen 10.03.1980
Katja München Zeichnen 10.03.1980
Peter Berlin Tennis 02.04.1975
Peter Berlin Lesen 02.04.1975

Tipps für Profis

  • Verwende Kommentare im VBA-Code, um zu dokumentieren, was jeder Abschnitt macht. Dies hilft nicht nur dir, sondern auch anderen, die deinen Code nutzen möchten.
  • Optimiere den Code für große Datenmengen durch den Einsatz von Arrays, um die Leistung zu steigern.
  • Teste den Code zuerst an einer Kopie deiner Daten, um unerwünschte Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich diesen Code auch in Excel 365 verwenden? Ja, dieser VBA-Code funktioniert in Excel 365 sowie in anderen Versionen, die VBA unterstützen.

2. Was passiert, wenn ich mehr als ein Hobby habe? Der Code teilt die Hobbies in separate Zeilen auf, während die anderen Informationen dupliziert werden.

3. Wie kann ich den Code anpassen? Du kannst die Variablen im Code ändern, um ihn an deine spezifischen Daten und Anforderungen anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige