Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1432to1436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA löschen gleicher Werte in 2 Sheets

Excel VBA löschen gleicher Werte in 2 Sheets
23.06.2015 12:18:02
Franky
Hallo Forumsteilnehmer,
ich habe ein Makro gebastelt, dass super funktioniert hat, bis ich auf die glorreiche Idee kam, noch einen Baustein hinzuzufügen.
Ziel der Erweiterung war es, das die Linien, welche im Bearbeitungssheet anhand von 2 Kriterien auch im Daily Sheet enthalten sind, aus dem Bearbeitungssheet gelöscht werden, also die ganze Zeile, leider funktioniert es nicht könnt Ihr mir bitte helfen?
Hier der Teil der nicht funktioniert:
' Dieser Teil funktioniert leider nicht
For j = 1 To LRendi
For BRowCounter = 3 To SRendi
Yep = Sheets("Daily Sheet").Range("K" & BRowCounter).Value
Nope = Sheets("Daily Sheet").Range("O" & BRowCounter).Value
If Sheets("Bearbeitungssheet").Range("K" & j).Value = Yep And Sheets("Bearbeitungssheet").Range("O" & j).Value = Nope Then
Sheets("Bearbeitungssheet").ActiveCell.EntireRow.Delete
' Sheets("Bearbeitungssheet").Range("K" & j).Value.EntireRow.Delete
End If
Next BRowCounter
Next j
Und hier das komplette Makro:
Sub Rollit()
' Rollit
Dim Useful As Variant
Dim AlsoUseful As Variant
Dim Yep As Variant
Dim Nope As Variant
Dim LRendi As Long
Dim L2endi As Long
Dim lngDestinationRowCounter As Long
Dim BRowCounter As Long
Dim j As Long
Dim ReiheVar As Long
Dim SRendi As Long
Dim Found As Boolean
Dim strFileName
LRendi = Sheets("Bearbeitungssheet").Range("A" & Rows.Count).End(xlUp).row
Sheets("Daily Sheet").Select
Cells.Select
Selection.ClearContents
Range("A1").Select
Sheets("Bearbeitungssheet").Select
SRendi = LRendi
Columns("A:W").Select
Selection.EntireColumn.Hidden = False
Range("A1").Select
ChDir _
"C:\Suspense"
Workbooks.Open Filename:= _
"S:\International \Global.xls"
Rows("1:3").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
Cells.Select
Selection.Copy
Windows("TestRS.xlsm").Activate
Sheets("Daily Sheet").Activate
Range("A1").Select
ActiveSheet.Paste
Columns("O:O").Delete
Range("A1").Select
ReiheVar = 1
' Dieser Teil funktioniert leider nicht
For j = 1 To LRendi
For BRowCounter = 3 To SRendi
Yep = Sheets("Daily Sheet").Range("K" & BRowCounter).Value
Nope = Sheets("Daily Sheet").Range("O" & BRowCounter).Value
If Sheets("Bearbeitungssheet").Range("K" & j).Value = Yep And Sheets(" _
Bearbeitungssheet").Range("O" & j).Value = Nope Then
Sheets("Bearbeitungssheet").ActiveCell.EntireRow.Delete
'     Sheets("Bearbeitungssheet").Range("K" & j).Value.EntireRow.Delete
End If
Next BRowCounter
Next j
' Ab hier geht es wieder
L2endi = Sheets("Daily Sheet").Range("A" & Rows.Count).End(xlUp).row
For j = 1 To L2endi
For lngDestinationRowCounter = 2 To SRendi
Useful = Sheets("Bearbeitungssheet").Range("K" & lngDestinationRowCounter).Value
AlsoUseful = Sheets("Bearbeitungssheet").Range("O" & lngDestinationRowCounter).Value
If Sheets("Daily Sheet").Range("K" & j).Value = Useful And Sheets("Daily Sheet").Range(" _
O" & j).Value = AlsoUseful Then
Sheets("Daily Sheet").Range("K" & j).Value = "Found"
End If
Next lngDestinationRowCounter
Next j
For j = 1 To L2endi
If Sheets("Daily Sheet").Range("K" & j).Value  "Found" And Sheets("Daily Sheet").Range("K" _
& j).Value  "Copied" Then
Sheets("Daily Sheet").Select
Range("A" & j).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Bearbeitungssheet").Select
Range("A" & LRendi + 1).Select
ActiveSheet.Paste
LRendi = LRendi + 1
Sheets("Daily Sheet").Range("K" & j).Value = "Copied"
End If
Next j
Sheets("Bearbeitungssheet").Select
Range("A:B,H:J,M:M,R:V").EntireColumn.Hidden = True
End Sub

Vielen Dank und viele Grüße
Franky

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA löschen gleicher Werte in 2 Sheets
23.06.2015 18:35:20
Frank
Hallo Franky,
mit der Fehlerbeschreibung Dieser Teil funktioniert leider nicht kann hier kaum einer was anfangen. Schreib doch dazu, was statt dessen passiert:
a) Gar nichts
b) Makro läuft, ohne den Codeteil auszuführen
c) Kompilierfehlermeldung
d) Laufzeitfehlermeldung
e) ...es passieren Dinge, die nicht passieren sollen ( Motherboard verglüht, Fileupload zu whistle@nsa.gov startet, höhere Wesen sprechen zu Dir etc.)
Grüsse,
Frank

AW: Excel VBA löschen gleicher Werte in 2 Sheets
24.06.2015 07:18:19
Franky
Hallo Frank,
vielen Dank für Dein Feedback und sorry für die unklare Fragestellung.
Ehrlich gesagt wäre Fall e ziemlich cool programmiert, zumindest wenn das in der Klammer passieren würde ;-)
Also das Makro läuft durch aber der Codeteil wird nicht ausgeführt.
Die doppelten Zeilen werden nicht aus dem Bearbeitungssheet rausgelöscht.
Ich weiß auch nicht ob das Makro meinen Kauderwelsch überhaupt erkennt.
Aufgabenstellung für das Makro ist folgende:
Vergleiche Spalte Spalte K und O des Bearbeitungssheets mit Spalte K und O des Daily Sheet.
Wenn die beiden Werte übereinstimmen lösche die komplette Zeile aus dem Bearbeitungssheet.
Ich hoffe es ist jetzt etwas klarer geworden.
Ich möchte nicht Deine Zeit verschwenden.
Vielen Dank
Gruß
Franky

Anzeige
AW: Excel VBA löschen gleicher Werte in 2 Sheets
24.06.2015 09:09:00
Michael
Hi zusammen,
der Code ist etwas unübersichtlich, und ich habe das Gefühl, Du sagst uns nicht die ganze Wahrheit:
bei der Zeile Sheets("Bearbeitungssheet").ActiveCell.EntireRow.Delete bekomme ich einen Fehler "aktion wird von Objekt nicht unterstützt" oder so.
Abgesehen davon isses sinnlos, die Zeile mit der ActiveCell zu löschen, weil die immer noch auf A1 selektiert ist.
Den eigentlich sinnvollen Befehl in der nächsten Zeile:
Sheets("Bearbeitungssheet").Range("K" & j).Value.EntireRow.Delete
hast Du auskommentiert, weil er sicherlich ne Fehlermeldung ausgespuckt hat. Das "Value" ist zu viel; wenn Du das rausnimmst
Sheets("Bearbeitungssheet").Range("K" & j).EntireRow.Delete
funktioniert das Skript nämlich wunschgemäß.
Bist Du Dir übrigens sicher, daß beide Blätter gleich viel Daten haben? Du ermittelst nämlich nur die unterste Zeile des "Bearbeitungssheet"s, übernimmst den Wert aber gleich für das daily sheet: SRendi = LRendi - hier gehören sich die Zeilen auch ermittelt.
Für größere Datenmengen ist das so nicht tauglich, weil die Schleifen viel zu viel in den den Tabellen herumrödeln. Abhilfen:
a) Verwendung von Arrays, nachzulesen unter http://www.online-excel.de/excel/singsel_vba.php?f=152
b) beide Tabellen zuerst sortieren und dann Zeile für Zeile vergleichen
c) Zeilen nicht einzeln löschen, sondern eine Markierung setzen ("x"), nach x sortieren, den kompletten Bereich löschen, wieder zurücksortieren (im Original eine Hilfsspalte mit Zeilennummern anlegen, 1,2,3,..., dann kann man nach dieser Spalte zurücksortieren).
d) Zeilen nicht einzeln löschen, sondern in ein separat geDIMtes Range "union"ieren und dessen Zeilen in einem Rutsch entfernen.
Schöne Grüße,
Michael

Anzeige
AW: Excel VBA löschen gleicher Werte in 2 Sheets
24.06.2015 09:38:15
Franky
Hallo Michael,
super, vielen Dank für die Info.
Die Unübersichtlichkeit kommt daher , dass ich nicht wirklich weiß was ich tue als Anfänger und überall immer ein bißchen rumbastele und mir dann immer noch was einfällt ;-)
Das glaubst du mir wahrscheinlich nicht und ich verstehe es auch nicht, aber heute morgen habe ich das Makro vor meinem Feedback extra nochmal laufen lassen und es ist ohne Fehlermeldung durchgelaufen.
Nachdem Du das mit dem Fehler beschrieben hast habe ich es nochmal laufen lassen und es kam eine Fehlermitteilung, was doch eigentlich nicht sein kann in dieser Zeile:
Sheets("Bearbeitungssheet").ActiveCell.EntireRow.Delete
Du hast Recht, die Sheets sind nicht gleich lang. Und das mit SRendi und Lrendi habe ich auch falsch gemacht, danke für den Tipp.
Den Hinweis mit dem rumrödeln werde ich mir anschauen.
Vielen Dank für Deine Hilfe und einen schönen Tag
Gruß
Franky

Anzeige
AW: Excel VBA löschen gleicher Werte in 2 Sheets
24.06.2015 09:49:52
Michael
Hi Franky,
manchmal könnte man echt meinen, die Dinger haben ein Eigenleben...
Naja, die Vorschläge sind nur dafür da, *falls* es Performance-Probleme gibt.
Wenn Du das einmal am Tag aufrufst, und es dauert 3 Sekunden, wirst Du damit auch leben können.
Happy Exceling,
Michael

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige