Listenvergleich

Bild

Betrifft: Listenvergleich
von: Larissa Apfel
Geschrieben am: 18.08.2015 09:03:29

Mal wieder dieses Thema..
Ich habe die Anregungen vom letzten Mal umgesetzt und das Programm macht auch das was es soll, aber leider noch etwas zusätzliches.
Folgende Ausgangssituation liegt vor:
Ich habe drei Listen in denen jeweils in Spalte B eine Nummer und in Spalte L ein Preis steht. Den Vergleich, ob sich die Preise geändert haben, habe ich schon gemacht. Jetzt möchte ich aber, dass die Nummer und die Preise in einer neuen Mappe aufgelistet werden.
Soweit ist mein Code:


m = 2
For x = 1300 To 1 Step -1
    For y = 1300 To 1 Step -1
        For Z = 600 To 2 Step -1
            If wkb2014.Range("L" & x).Value < wkb2015.Range("L" & y) And _
             wkb2014.Range("B" & x).Value = wkb2015.Range("B" & y).Value And export.Range("B" &  _
Z).Value = wkb2014.Range("B" & x).Value And _
             export.Range("B" & Z).Value = wkb2015.Range("B" & y).Value Then
                export.Range("A" & Z).Copy Destination:=ziel.Range("A" & m)
                wkb2015.Range("B" & x).Copy Destination:=ziel.Range("B" & m)
                wkb2014.Range("L" & x).Copy Destination:=ziel.Range("C" & m)
                wkb2015.Range("L" & y).Copy Destination:=ziel.Range("D" & m)
                export.Range("F" & Z).Copy Destination:=ziel.Range("E" & m)
                m = m + 1
            End If
        Next
    Next
Next
Also das erste das mich wundert ist, dass die ersten Einträge nicht in der zweiten Zeile sind, sondern viel später. Außerdem werden manche Preise (Einträge) doppelt kopiert. Ich sehe meinen Denkfehler gerade nicht. Seht ihr den Fehler?

Bild

Betrifft: AW: Listenvergleich
von: Rudi Maintaire
Geschrieben am: 18.08.2015 11:20:32
Hallo,
das sind ja über 1 Mrd. Durchläufe. Wie lange soll das laufen?
Aus wkb2015 kopierst du mal Zeile x und mal Zeile y?????
wkb2015.Range("B" & x).Copy Destination:=ziel.Range("B" & m)
wkb2014.Range("L" & x).Copy Destination:=ziel.Range("C" & m)
wkb2015.Range("L" & y).Copy Destination:=ziel.Range("D" & m)
Gruß
Rudi

Bild

Betrifft: AW: Listenvergleich
von: Larissa Apfel
Geschrieben am: 18.08.2015 11:31:24
Da hat sich der Fehlerteufel eingeschlichen. Ich habe den Code jetzt folgendermaßen abgeändert:

n = 2
For x = 150 To 2 Step -1
 For y = 187 To 2 Step -1
    If wkb2014.Range("A" & x).Value = wkb2015.Range("A" & y) And _
     wkb2014.Range("B" & x).Value = wkb2015.Range("B" & y).Value Then
        wkb2014.Range("A" & x).Copy Destination:=ziel.Range("B" & n)
        wkb2015.Range("B" & y).Copy Destination:=ziel.Range("D" & n)
        wkb2014.Range("B" & x).Copy Destination:=ziel.Range("C" & n)
        ziel.Range("F" & n).Value = "Gleich"
        n = n + 1
        
   End If
     If wkb2014.Range("B" & x).Value < wkb2015.Range("B" & y) And _
     wkb2014.Range("A" & x).Value = wkb2015.Range("A" & y).Value Then
        
        wkb2015.Range("A" & y).Copy Destination:=ziel.Range("B" & n)
        wkb2015.Range("B" & y).Copy Destination:=ziel.Range("D" & n)
        wkb2014.Range("B" & x).Copy Destination:=ziel.Range("C" & n)
        ziel.Range("F" & n).Value = "Teurer"
        n = n + 1
    End If
Next
Next
Jetzt bin ich (fast) zufrieden. Mir fehlt jetzt noch folgendes. Es gibt Artikelnummern, die in der 2015 Liste vorkommen, aber nicht in der 2014. Wie kriege ich die jetzt kopiert?

Bild

Betrifft: AW: Listenvergleich
von: Rudi Maintaire
Geschrieben am: 18.08.2015 12:21:25
Hallo,
Es gibt Artikelnummern, die in der 2015 Liste vorkommen
if worksheetfunction.countif(wkb2014.Columns(2),wkb2015.Range("B"&x))=0 then
'kopieren
end if
Gruß
Rudi

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Datum per formel "