URL: https://www.overclockers.at/coding-stuff/excel-macro-worksheets-abgleichen_222280/page_1 - zur Vollversion wechseln!
Hab hier ein kleines Problem und steh bisschen auf der Leitung.
Meine Excel/VB-Macro Kenntnisse halten sich auch sehr in Grenzen. Vielleicht könnt ihr mir ja helfen:
Hab 2 Worksheets, A und B
Spalte A ist bei beiden mit teilweise gleichen Daten befüllt.
In Worksheet A sind aber zusätzliche Einträge vorhanden.
Jetzt müssten beide Worksheets abgeglichen werden, dahingehend dass Reihen bei denen Spalte A nicht in beiden Worksheets vorkommt aus Worksheet A gelöscht werden.
Beispiel:
WS A:
1
2
3
4
WS B:
1
3
4
==> Ergebnis:
WS A:
1
3
4
hoffe ich habe das halbwegs brauchbar erklären können.
Notfalls könnte das Ergebniss auch in einen neuen Worksheet gespeichert werden.
Verwendet wird Excel 2010
TIA
hast schon einen ansatz, bzw irgendwas versucht?
wenn ja wo hängst, was funktioniert nicht?
probiert hab ich folgendes:
Code:Public Sub delOLD() Dim i As Long Dim iLastRow As Long, xLastRow As Long Dim ws As Worksheet, ws1 As Worksheet Set ws = Sheets("foo") ' Imported Data Set ws1 = Sheets("bar") ' Deleted Data 'ws1.Visible = xlSheetVisible ' xLastRow = ws1.Range("A500").End(xlUp).Row xLastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row With ws iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row For i = iLastRow To 1 Step -1 For x = xLastRow To 1 Step -1 If .Cells(i, "A").Value <> ws1.Cells(x, "A").Value Then .Rows(i).Delete End If Next x Next i End With 'ws1.Visible = xlSheetHidden 'hddr End Sub

bist dir sicher das das cells() mit dem "A" funktioniert?
ich kenn das nur mit zahlen
sonst gib mal bei jeder iteration die beiden strings aus und schaus dir an
cells(i,"A") funkt, habs grad probiert 
gibts irgendeinen Shortcut der Scripts brutal abwürgt wenn sie aktiv sind... auf den Stop-Button lässt er mich ned klicken -.-
edit: ah, habs ctrl+break
[Strg] - [Pause] könnte funktionieren
so, habs jetzt etwas anders gemacht (mit neuem WS)
Code:Public Sub delOLD() Dim i As Long Dim iLastRow As Long, xLastRow As Long Dim ws As Worksheet, ws1 As Worksheet Dim newWs As Worksheet Set newWs = Sheets("new") Set ws = Sheets("a") ' Imported Data Set ws1 = Sheets("b") ' Deleted Data newWs.Cells.Clear xLastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row With ws iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row For i = iLastRow To 1 Step -1 For x = xLastRow To 1 Step -1 If .Cells(i, "A").Value = ws1.Cells(x, "A").Value Then .Cells(i, "A").EntireRow.Copy newWs.Cells(i, "A") End If Next x Next i End With End Sub

Zitat von Timmää[Strg] - [Pause] könnte funktionieren
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026