Löschen von Zeilen wenn Dublette oder Bestimmter Wert

Moderator: ModerationP

Löschen von Zeilen wenn Dublette oder Bestimmter Wert

Beitragvon Runkwitz » 15. Mai 2021, 08:16

Hallo,
ich möchte eine VBA-Prozedur schreiben, die folgendes machen soll.

Sie soll eine Tabelle mit Buchungen von oben nach unten durchlaufen.

Eine Spalte der Tabelle enthält die Transaktionsnummern (H:H) und eine Spalte enthält eine Information, ob die Buchung erfolgreich abgeschlossen wurde ("failed" oder "completed") (G:G)

Wenn jetzt in der Tabelle eine Transaktionsnummer doppelt oder mehrfach auftaucht, soll nur die erste Buchung (bzw. entsprechende Zeile) erhalten bleiben. Bei allen weiteren soll jeweils die komplette Zeile gelöscht werden.

Ebenso sollen die Zeilen mit den Buchungen, die mit "failed" gekennzeichnet sind, gelöscht werden.

Ich hoffe, dass es hierfür eine elegante und schlanke lösung gibt.

VG
Runkwitz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 81
Registriert: 07. Feb 2013, 10:30

Re: Löschen von Zeilen wenn Dublette oder Bestimmter Wert

Beitragvon Flotter Feger » 15. Mai 2021, 09:13

Hallo,

beides kann Excel einfach so ... ohne VBA.

1. Daten --> Duplikate löschen

2. Autofilter auf "Failed" ---> Strg+A --> Entf

Sabina
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3327
Registriert: 24. Okt 2016, 16:40

Re: Löschen von Zeilen wenn Dublette oder Bestimmter Wert

Beitragvon Runkwitz » 15. Mai 2021, 21:18

Ja, das ist mir bewusst, allerdings soll es automatisch per Prozedur laufen. Da das häufiger nötig sein wird. Da die Funktion den Faktor „DAU“ ausschließen soll, möchte ich dem User keine Zusatzaufwand verpassen...
Runkwitz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 81
Registriert: 07. Feb 2013, 10:30

Re: Löschen von Zeilen wenn Dublette oder Bestimmter Wert

Beitragvon d'r Bastler » 15. Mai 2021, 22:19

Hallo runkwitz,

zeichne Dein Vorgehen (oder das von Sabina) mit dem Makrorecorder auf und weise dem Makro einen Hotkey oder einen Button zu. Und schon hast Du Dein VBA. Das kann man dann erfahrungsgemäß zwar noch deutlich optmieren: Abspecken, Fehler abfangen, unnötige Parameter entsorgen, usw. Aber als Einstieg vielleicht nicht ganz schlecht.

Viel Erfolg
d'r Bastler

Selbst Heiden glauben an min. 10% Mystik in der EDV! Gilt auch für mein Win 10 pro/Office 2019 ProPlus und alle VBAsteleien ...
Aktueller Trollfutter-Vorrat: NULL
Benutzeravatar
d'r Bastler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 338
Registriert: 23. Jan 2021, 22:36
Wohnort: VBAsteln makes the world go around

Re: Löschen von Zeilen wenn Dublette oder Bestimmter Wert

Beitragvon Runkwitz » 16. Mai 2021, 08:09

"Makro aufzeichnen" habe ich noch nie genutzt... wird jetzt öfter passieren :oops: Danke

Hier mein Ergebnis:

Code: Alles auswählen
Sub DeleteFailedAndDouble()
Dim i As Integer
Sheets("Buchungen").Select
 
    While Cells(1 + i, 1) <> ""
        If Cells(1 + i, 7) = "Failed" Then
            Rows(i + 1).Select
            Selection.Delete Shift:=xlUp
            i = 1
        Else
            i = i + 1
        End If
    Wend
   
    Range("A:P").RemoveDuplicates Columns:=8, Header:=xlYes


End Sub


Gibt es hierfür schlankere Varianten bzw. Befehle?
VG
Runkwitz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 81
Registriert: 07. Feb 2013, 10:30

Re: Löschen von Zeilen wenn Dublette oder Bestimmter Wert

Beitragvon slowboarder » 16. Mai 2021, 08:24

Hi

Code: Alles auswählen
'--- zeilen mit failed entfernen
with activesheet.Usedrange
    With .Columns(.columns.Count + 1)
        .formular1c1 = "=If(rc7=""Failed"",0,row())"
        .cells(1, 1).Value = 0
        .entirerrow.removeduplicates .column, xlno
        .clearcontents
    End with
End with

'--- doppelte Nummern löschen
Range("A:P").RemoveDuplicates Columns:=8, Header:=xlYes


Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 28553
Registriert: 18. Apr 2009, 13:33


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste

cron