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

Forumthread: Bereich vergleichen

Bereich vergleichen
21.02.2017 09:04:55
Michael
Hallo zusammen,
aus einer monatlich generierten Excel - Tabelle kopiere ich mir zwecks Auswertung die Spalten A bis C und E in einem neuen Tabellenblatt in den Zeilen A bis D.
Normalerweise sind es 6 Zeilen (inklusive Überschrift). Die werden "aufbereitet" und in einem anderen Tabellenblatt kopiert. Das alles klappt soweit ohne Probleme.
Ab Dezember kann es vorkommen, dass nicht 5 sondern nur 4 Produkte angezeigt werden (das fehlende Produkt wurde nicht bebucht, somit null und wird in der monatlichen Auswertung auch nicht mit aufgeführt). Wenn dann fehlt Produkt 2
Damit aber die Zahlen immer in der richtigen Reihenfolge eingetragen werden, habe ich mir gedacht, dass per VBA die übertragende Produkte (Spalte B) mit den in Zelle H2 bis I6 Produkte verglichen werden. Wenn Produkt 2 fehlt, Die Zellen A2 bis D5 ausschneiden und in Zelle A3 einfügen. Dann Zelle H3 und I3 kopieren und in Zelle B2 einfügen.
Zur besseren Übersicht habe ich mal eine Datei hochgeladen.
https://www.herber.de/bbs/user/111618.xlsx
Für eure Hilfe bedanke ich mich schon einmal im voraus.
Gruß
Michael
P.S.: Wäre nett, wenn ihr den Code eventuell zusätzlich hier einstelle könnt; da ich bei einer Excel - Datei mit Makros mich erst an einem anderen PC anmelden muss.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bereich vergleichen
21.02.2017 21:37:27
Piet
Hallo Michael
das Problem konntest du auch durch aufzeichnen mit dem Makro Recorder lösen.
Anbei zwei Makros mit verschiedener Funktionsweise. Cut verschieben war dein eigener Vorschlag.
Dabei stimmten m.E. aber einige Zeilen nicht. Das zweite ist ein richtiges Universal Makro.
Hier interessiert mich nicht welches Product fehlt? Das kann statt Berta auch was anderes sein.
Das zweite kopiert für jedes vorhandene Product die Zahl in die betreffende Spalte J.
mfg Piet
Sub Produkt_ausfüllen()
Dim AC As Object, AJ As Object
For Each AC In Range("B2:B6")
For Each AJ In Range("H2:H6")
If AJ.Value = AC.Value Then
AJ.Cells(1, 3) = AC.Cells(1, 3)
End If
Next AJ
Next AC
End Sub
Sub Cut_Verschieben()
Range("A3:D5").Cut   'gemeint ist wohl A3 statt A2
Range("A4").Select   'Ziel sollte A4 sein statt A3
ActiveSheet.Paste
Range("H3:I3").Copy
Range("B3").Select   'Ziel sollte A4 sein statt A3
ActiveSheet.Paste
Range("A3") = Range("A2")  'Monat kopieren ?
Application.CutCopyMode = False
End Sub

Anzeige
AW: Bereich vergleichen
22.02.2017 08:40:38
Michael
Hallo Piet,
schönen Dank erst einmal für deine Antwort.
Das Problem kann man mit einem Makro-Rekorder leider nicht lösen.
Vielleicht habe ich mich auch zu umständlich ausgedrückt. Es kann sein, dass bei der monatlichen Auswertung nur 4 Produkte (A,C,D,E wenn dann fehlt nur B) ausgeworfen werden; es kann aber auch sein, dass alle 5 Produkte (A-E) angezeigt werden. Per VBA soll verglichen werden ob die Zellen B2 bis B6 identisch mit dem Inhalt der Zellen H2 bis H6 sind; wenn Produkt 2 fehlt, die Zellen A3 bis D5 ausschneiden und in Zelle A3 einfügen. Dann Zelle H3 und I3 kopieren und in Zelle B2 einfügen.
Was ich nicht hinbekomme, ist das Vergleichen.
Das Cut_Verschieben kann man nur verwenden, wenn das Produkt B nicht vorhanden ist.
Das Produkt_ausfüllen kann ich nehmen, habe es so angepasst, dass bei leerer Zelle J3 dort eine Null eingetragen wird. Muss dann nur einige andere Makros anpassen, was aber keine Schwierigkeit ist.
Trotzdem nochmals schönen Dank
Sub Produkt_ausfüllen()
Dim AC As Object, AJ As Object
For Each AC In Range("B2:B6")
For Each AJ In Range("H2:H6")
If AJ.Value = AC.Value Then
AJ.Cells(1, 3) = AC.Cells(1, 3)
End If
Next AJ
Next AC
If Range("J3") = "" Then
Range("J3") = 0
End If
End Sub
Gruß
Michael
Anzeige
geschlossen oWt
23.02.2017 16:36:43
Piet
,,,
;
Anzeige

Infobox / Tutorial

Bereich vergleichen in Excel


Schritt-für-Schritt-Anleitung

Um die Produkte in Excel zu vergleichen und die entsprechenden Daten zu verschieben, kannst du die folgenden Schritte ausführen:

  1. Daten in Excel vorbereiten: Stelle sicher, dass deine Daten im richtigen Format vorliegen. Die Produkte sollten in den Zellen B2 bis B6 und die Vergleichswerte in H2 bis H6 stehen.

  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. VBA-Code eingeben: Verwende folgenden Code, um die Produkte zu vergleichen und die Daten entsprechend zu verschieben.

    Sub ProduktVergleichen()
       Dim AC As Range, AJ As Range
       Dim fehlt As Boolean
       fehlt = True
    
       For Each AC In Range("B2:B6")
           For Each AJ In Range("H2:H6")
               If AJ.Value = AC.Value Then
                   fehlt = False
                   Exit For
               End If
           Next AJ
           If fehlt Then
               ' Produkte verschieben
               Range("A3:D5").Cut Destination:=Range("A3")
               Range("H3:I3").Copy Destination:=Range("B2")
               Exit For
           End If
           fehlt = True ' Für den nächsten Vergleich zurücksetzen
       Next AC
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Problem: Das Makro funktioniert nicht, wenn mehr oder weniger Produkte vorhanden sind.

    • Lösung: Stelle sicher, dass die Bereiche B2:B6 und H2:H6 korrekt ausgewählt sind und die Daten in der richtigen Reihenfolge vorliegen.
  • Problem: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Überprüfe den Code auf Tippfehler und stelle sicher, dass die Zellen, auf die verwiesen wird, existieren.

Alternative Methoden

  • Makro-Rekorder: Du kannst auch den Makro-Rekorder verwenden, um einfache Aufgaben aufzuzeichnen. Dies ist jedoch nicht immer für komplexe Vergleiche geeignet.

  • Formeln: Eine Formel wie =WENN(ISTFEHLER(VERGLEICH(B2;H2:H6;0));"Fehlt";"Vorhanden") kann helfen, fehlende Produkte zu identifizieren, bevor du das Makro ausführst.


Praktische Beispiele

Angenommen, deine Daten sehen folgendermaßen aus:

A B C D E F G H I
Monat Produkt1 Wert1 ... ... ... ... Produkt1 Wert1
Produkt2 Wert2 ... ... ... ... Produkt3 Wert3
Produkt3 Wert3 ... ... ... ... Produkt2 Wert2
Produkt4 Wert4 ... ... ... ...
Produkt5 Wert5 ... ... ... ...

Wenn Produkt 2 nicht vorhanden ist, wird das Makro die Zeilen entsprechend verschieben.


Tipps für Profis

  • Debugging: Nutze Debug.Print im VBA-Code, um den Status von Variablen zu überwachen und Fehler zu finden.
  • Fehlerbehandlung: Implementiere On Error Resume Next für eine bessere Fehlerbehandlung im Makro.
  • Dokumentation: Kommentiere deinen Code gut, damit du oder andere ihn später leichter verstehen können.

FAQ: Häufige Fragen

1. Frage
Kann ich das Makro für andere Bereiche anpassen?
Antwort: Ja, ändere einfach die Zellreferenzen im Code.

2. Frage
Wie speichere ich die Datei mit dem Makro?
Antwort: Speichere die Datei im Format .xlsm, um die Makros zu behalten.

3. Frage
Was mache ich, wenn die Daten nicht korrekt verschoben werden?
Antwort: Überprüfe die Zellreferenzen und stelle sicher, dass die Daten in der richtigen Reihenfolge vorliegen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige