Excel Macro: Worksheets abgleichen
Lobo 14.02.2011 - 09:40 1391 7
Lobo
Here to stay
|
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
|
Timmää
Big d00d
|
hast schon einen ansatz, bzw irgendwas versucht?
wenn ja wo hängst, was funktioniert nicht?
|
Lobo
Here to stay
|
probiert hab ich folgendes: 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
hab den code in einem anderen Forum gefunden und probiert etwas abzuändern das "if" passt noch wohl so noch nicht (was mir ja eigentlich auch bewusst ist... ) Momentan löscht er im Endeffekt einfach einen Worksheet
|
Timmää
Big d00d
|
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
|
Lobo
Here to stay
|
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
Bearbeitet von Lobo am 14.02.2011, 10:23
|
Timmää
Big d00d
|
[Strg] - [Pause] könnte funktionieren
|
Lobo
Here to stay
|
so, habs jetzt etwas anders gemacht (mit neuem WS) 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
sollte eigentlich stimmen was rauskommt... muss danach nurnoch sortieren, um die leeren Zeilen los zu werden, aber das is mir wurscht
|
Ringding
Pilot
|
[Strg] - [Pause] könnte funktionieren Ich glaube eher F12.
|