Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Code für zeilenweisen Vergleich und Löschen?

VBA-Code für zeilenweisen Vergleich und Löschen?
05.08.2016 11:51:50
Martin
ich benötige einen VBA-Code, der folgendes macht:
In einem Tabellenblatt werden alle Zeilen beginnend ab Zeile Nr. 6 bis zur letzten belegten Zeile daraufhin geprüft, ob in zwei untereinander stehenden Zeilen in Spalte C die gleiche Personalnummer steht. Ist dies der Fall, soll zusätzlich geprüft werden, ob die beiden gefundenen Zeilen in Spalte K eine bestimmte Kombination von Textinhalten haben.
Konkret geht es z.B. um "Abgang wegen Namensänderung" und "Zugang wegen Namensänderung". Wird so eine Kombination (untereinander stehend und mit gleichen Werten in Spalte C) gefunden, dann soll der Code folgendes machen:
  • Die Zeile, die in Spalte K "Abgang wegen Namensänderung" enthält, soll gelöscht werden.
  • Dafür soll in der anderen Zeile dann der Eintrag in Spalte K von "Zugang wegen Namensänderung" auf "Namensänderung" abgeändert werden.

  • Falls möglich, soll es auch noch egal sein, wie die Reihenfolge der Zeilen ist. Das heisst, es kann sein, dass bei Zeilen mit gleicher Personalnummer mal der Zugang und mal der Abgang in der ersten der beiden gefundenen Zeilen steht.
    Ich meine, das müsste mit VBA machbar sein. Einzelne Teile davon habe ich auch schon mal irgendwo angewandt, aber in der Kombination kriege ich das jetzt nicht zusammen und wäre für Hilfe dankbar!

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: erstmal ne Lösung ohne Code
    05.08.2016 12:36:58
    Daniel
    Hi
    das ist sogar ohne VBA einfach machbar:
    1. schreibe in einer Hilfsspalte am Tabellenende folgende Formel, welche alle Zellen kennzeichnet, die gelöscht werden sollen mit 0 kennzeichnet und die die stehenbleiben müssen mit der Zeilennummer:
    (Formel für Zeile 6)
    =Wenn(Und(Oder(C6=C5,C6=C7);K6="Abgang wegen Namensänderung");0;Zeile())
    2. schreibe in die nächste Hilfsspalte eine Formel, die die Textänderung bei der entsprechenden Bedingung durchführt:
    =Wenn(Und(Oder(C6=C5;C6=C7);Oder(K5="Abgang wegen Namensänderung";K7="Abgang wegen Namensänderung");K6="Zugang wegen Namensänderung");"Namensänderng";K6)
    beide Formeln kommen in eine Hilfsspalte am Tabellenende in Zeile 6 und werden bis zum Ende der Liste runtergezogen.
    3. Kopiere dann die 2. Hilfsspalte und füge sie als Wert in die Spalte K ein (das führt dann die Textänderung aus)
    4. Schreibe in die Überschrift (Zeile 5) der ersten Hilfsspalte die 0 und wennde dann auf die ganze Tabelle incl der Beiden Hilfsspalten die Funktion DATEN - DATENTOOLS - DUPLIAKTE ENTFERNEN an, mit der ersten Hilfsspalte als Kriterium und der Option "keine Überschrift"
    5. Lösche die Hilfsspalten wieder.
    so geht das auch ohne VBA einfach und schnell.
    Wenn du ein Makro haben willst, schreibe einfach einen Code, welcher diese 5 bzw 6 Schritte ausführt.
    einen großen Teil des Codes kannst du dir mit Hilfe des Recorders erstellen.
    Gruß Daniel
    Anzeige
    AW: erstmal ne Lösung ohne Code
    05.08.2016 12:41:01
    Martin
    na ja, gerade das Erkennen der Zeilen, die gelöscht werden sollen, soll ja der VBA-Code erledigen. Ich wollte halt nicht manuell Zeilen kennzeichnen müssen.
    AW: erstmal ne Lösung ohne Code
    05.08.2016 13:03:40
    Daniel
    Hi
    du trägst die Formel in die erste Zeile ein und kopierst dann die Formel nach unten.
    dann werden die Zeilen automatisch über die Formel gekennzeichnet.
    Probiere zuerst aus, ob du mit dieser Vorgehensweise deine Aufgabe lösen kannst.
    Wenn ja (aber das solltest du bestätigen), ist es ein kleiner Aufwand, diese paar Schritte in ein Makro umzuwandeln, das solle auch bei VBA-Basiskenntnissen möglich sein, da dir der Recorder dabei hilft.
    Gruß Daniel
    Anzeige

    358 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige