"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Excel Macro: Worksheets abgleichen

Lobo 14.02.2011 - 09:40 1391 7
Posts

Lobo

Here to stay
Avatar
Registered: May 2002
Location: In da Oaschicht
Posts: 2558
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
Avatar
Registered: Nov 2007
Location: linz
Posts: 222
hast schon einen ansatz, bzw irgendwas versucht?

wenn ja wo hängst, was funktioniert nicht?

Lobo

Here to stay
Avatar
Registered: May 2002
Location: In da Oaschicht
Posts: 2558
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

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 :D

Timmää

Big d00d
Avatar
Registered: Nov 2007
Location: linz
Posts: 222
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
Avatar
Registered: May 2002
Location: In da Oaschicht
Posts: 2558
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
Avatar
Registered: Nov 2007
Location: linz
Posts: 222
[Strg] - [Pause] könnte funktionieren

Lobo

Here to stay
Avatar
Registered: May 2002
Location: In da Oaschicht
Posts: 2558
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

sollte eigentlich stimmen was rauskommt... muss danach nurnoch sortieren, um die leeren Zeilen los zu werden, aber das is mir wurscht ;)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von Timmää
[Strg] - [Pause] könnte funktionieren

Ich glaube eher F12.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz