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

Forumthread: VBA Schleife für gleiche Zellenwerte

VBA Schleife für gleiche Zellenwerte
12.06.2013 16:02:38
Claudia
Hallo zusammen,
nachdem ich schon sehr lange nicht mehr mit VBA gearbeitet habe fehlt mir jeglicher Ansatz für eine Schleife, die folgende Aufgabe hat:
Ich habe eine Tabelle mit 4 Spalten. In Spalte A können untereinander gleiche Werte mehrfach vorkommen. Solange der Wert gleich ist, sollen die zugehörigen Zeilenwerte der Spalten B bis D jeweils an das Ende der ersten Zeile (Wert in Spalte A kommt erstmals vor)gesetzt werden.
Hier ein Beispiel:
https://www.herber.de/bbs/user/85787.xlsx
Wäre toll wenn mir jemand helfen könnte, um wieder den Einstieg zu finden.
Viele Grüße
Claudia

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleife für gleiche Zellenwerte
12.06.2013 16:40:45
Rudi
Hallo,
eine Möglichkeit:
Sub Trans()
Dim Z1 As Long, Z2 As Long, S1 As Long
Application.ScreenUpdating = False
Range("A1:D2").Copy Sheets(2).Range("A1:D2")
S1 = 2
Z2 = 2
For Z1 = 3 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(Z1, 1) = Cells(Z1 - 1, 1) Then
S1 = S1 + 3
Cells(Z1, 2).Resize(, 3).Copy Sheets(2).Cells(Z2, S1)
Cells(1, 2).Resize(, 3).Copy Sheets(2).Cells(1, S1)
Else
S1 = 2
Z2 = Z2 + 1
Cells(Z1, 1).Resize(, 4).Copy Sheets(2).Cells(Z2, 1).Resize(, 4)
End If
Next
End Sub

Gruß
Rudi

Anzeige
AW: VBA Schleife für gleiche Zellenwerte
12.06.2013 17:22:02
Claudia
Hallo Rudi,
besten Dank für die schnelle Antwort und es funktioniert perfekt.
Viele Grüße, Claudia
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Schleife für gleiche Zellenwerte in Excel


Schritt-für-Schritt-Anleitung

Um eine VBA Schleife für gleiche Zellenwerte in Excel zu erstellen, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen und wähle Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub Trans()
       Dim Z1 As Long, Z2 As Long, S1 As Long
       Application.ScreenUpdating = False
       Range("A1:D2").Copy Sheets(2).Range("A1:D2")
       S1 = 2
       Z2 = 2
       For Z1 = 3 To Cells(Rows.Count, 1).End(xlUp).Row
           If Cells(Z1, 1) = Cells(Z1 - 1, 1) Then
               S1 = S1 + 3
               Cells(Z1, 2).Resize(, 3).Copy Sheets(2).Cells(Z2, S1)
               Cells(1, 2).Resize(, 3).Copy Sheets(2).Cells(1, S1)
           Else
               S1 = 2
               Z2 = Z2 + 1
               Cells(Z1, 1).Resize(, 4).Copy Sheets(2).Cells(Z2, 1).Resize(, 4)
           End If
       Next
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus: Drücke ALT + F8, wähle Trans aus der Liste und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004"

    • Lösung: Stelle sicher, dass die Zielarbeitsmappe (Sheets(2)) existiert und nicht geschützt ist.
  • Fehler: Falsche Daten werden kopiert

    • Lösung: Überprüfe, ob die Zellen in Spalte A korrekt formatiert sind und keine Leerzeichen enthalten.

Alternative Methoden

Wenn Du keine VBA verwenden möchtest, kannst du die Funktion Daten -> Duplikate entfernen nutzen, um gleiche Werte in Spalte A zu konsolidieren. Allerdings wird hierbei nicht die gleiche Flexibilität wie bei einer VBA-Lösung geboten.


Praktische Beispiele

Angenommen, Du hast folgende Daten in Spalte A:

A B C D
Apfel 1 2 3
Apfel 4 5 6
Banane 7 8 9
Banane 10 11 12

Nach dem Ausführen des Makros wird die Tabelle in Sheet 2 wie folgt aussehen:

A B C D
Apfel 1 2 3
4 5 6
Banane 7 8 9
10 11 12

Tipps für Profis

  • Verwende Option Explicit: Füge an den Anfang Deines Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Dokumentiere Deinen Code: Schreibe Kommentare im Code, um die Funktionsweise jeder Zeile zu erklären. Dies ist besonders hilfreich für die Wartung später.
  • Teste in einer Kopie der Datei: Führe das Makro zuerst in einer Kopie Deiner Datei aus, um sicherzustellen, dass alles wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Frage
Was mache ich, wenn das Makro nicht funktioniert?
Antwort: Überprüfe, ob alle Zellen korrekt formatiert sind und dass Du die korrekten Zellreferenzen im Code verwendest.

2. Frage
Kann ich den Code anpassen, um mehr Spalten zu verarbeiten?
Antwort: Ja, Du kannst die Resize-Funktion im Code anpassen, um mehr oder weniger Spalten zu kopieren, je nach Bedarf.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige