Excel Daten abgleich

Liebe/-r Experte/-in,
Ich bin am verzweifeln.
Ich hoffe es kann mir einer helfen und hat einen TIP oder Lösung für mich.

Ich bin seit neusten beauftrag worden die von unserem Zulieferer zur Verfügung gestellten Datensätze/Preislisten für unseren Wahrenwirtschaftsprogram aufzuarbeiten.

Die Listen kommen in Xls Format. und haben ca 10 000-20 000 Artikel im Inhalt.

Für eine schnellen Preisabgleich ist das hier nicht das Problem

Ich gleiche die Daten mit unserer bestehnden Liste ab
in dem ich die Artikelnummer über die Formel indetisch (wahr abgfrage) Mit der wenn Formel über den War Abgleich wird z.B. der neue Preis in unsere liste eingefügt.

Das ist soweit ok, glaub ich.

Jetzt aber das Problem

In der neuen Liste sind z.B. neue Artikel beinhaltet und alte Artikel entfernt.

So das mit meinen Abfragen das ganze sehr ins stottern gerät und mühseligt ist.
Ich muss auf unserer Tabelle die nicht mehr existierenten Artikel auf inaktiv stellen (in eine spalte mit 0)
Die neuen Artikel müssen eingefügt werden.

Da hier allerdings das ganze alle +/- 20 Artikel mal auf inaktiv geht bzw ein neuer Artikel dazukommt, frage ich mich ob es möglich ist das wenn ein neuer Datensatz dazukommt dieser automatisch in einer neuen Zeile eingefügt wird, bzw Artikel die inaktiv werden dit Spalte entsprechend mit 0 gekennzeichnet wird.

Ich hoffe es kann mir einer helfen, ich bin echt am Verzweifeln

Grüsse aus Würzburg
Michael

Genau, dass wäre dann mal mittels VBA möglich.
Die Vorgehensweise ist dem entsprechend nicht so schwierig. Die Vorgehensweise:

  1. Alles selektieren (tabelle1.cells.select)
  2. Sortieren nach der Artikelnummer (Beispiel Spalte D)
    Selection.Sort Key1:=Range(„D1“), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
  3. Kundentabelle in das Tabellenblat2 z.B. Einfügen
  4. Tabellenblatt2 auch Sortieren nach Artikelnummern
  5. Letzte Eingabe in Tabelle1 feststellen mit:
    dim row as long
    'Suche die erste leere Zeile in Spalte 4 (D)
    'Der Parameter Row darf nicht mehr verändert/ gebraucht werden!
    for row=1 to 65536 step 1
    if tabelle1.cells(row,4) = „“ then exit for
    if row= 65536 then
    msgbox „Tabelle ist voll“
    exit sub
    end if
    next row
  6. Vergleiche die beiden Tabellen miteinander
    dim row1 as long 'Zeile
    dim l as long 'Korekturparameter
    l=0
    dim i as long 'Suchparameter für korrektur
    for row1=1 to 65536 step 1
    'Sucht die erste leere Zeile in Tabelle2
    'für beendigung
    if tabelle2.cells(row,4) = „“ then exit for
    if row= 65536 then
    msgbox „Tabelle ist voll“
    exit sub
    end if
    'Vergleichen der Tabelleninhalte
    If tabelle1.cells(row1+l ,4)tabelle2.cells(row1,4) then
    'Ist neuer Artikel oder der alte wurde gelöscht
    'Suchen ob dieser Artikel irgendwo vorhanden ist
    for i= row1 to row
    If tabelle1.cells(row1+l,4)=tabelle2.cells(row1,4) Then
    'Artikel wurde weiter unten in der Liste gefunden, alle Artikel vorher existieren nicht mehr.
    'Alte Artikel bis zu dieser Zeile mit einem o in Spalte a versehen.
    l=i
    for i=1 to l
    tabelle1.cells(row1+i,1)=„0“
    next i
    else
    'Artikel wurde nicht gefunden auf dieser Zeile, suchen bis letzter Datensatz (erster leere Satz)
    if tabelle1.cells(row1+i,4)="" then
    'Kein Datensatz gefunden! Neuer Anlegen
    row=row+1
    Tabelle1.cells(row,1)=Tabelle2(row1,1)
    Tabelle1.cells(row,2)=Tabelle2(row1,2)
    Tabelle1.cells(row,3)=Tabelle2(row1,3)
    Tabelle1.cells(row,4)=Tabelle2(row1,4)
    Tabelle1.cells(row,5)=Tabelle2(row1,5) 'etc…
    end if
    next i
    next for

In etwa so.
Grüsse Sebastian

Hallo Sebastian
Das hört sich so an als das funktionieren würde.
Ich bin da echt der anti Profi.
Das ist für mich mit meinen Kenntnissstand an Excel nicht umsetzbar.
Kann ich Dir mal so einen Liste zukommen lassen.
Sollte nicht zu deinen Nachteil sein, komme aus einer leckeren Weingegend :smile:
Bin echt schon am verzweifeln.
e-mail: [email protected]

Gruss
Michael

Sorra bin zu sehr unter Zeitdruck und kann es in 5 Minuten nicht lösen

Du kannst mir aber mal eine mail an [email protected] schicken und ich schicke Dir eine Tabelle mit einer Formel, die Ihren Bereich automatisch über alle nichtleeren Zellen erstreckt. Die Info könnten i.V.m der SVerweis funktion oder eienr Pivot-Tabelle zu einere Lösung fürhren.

VG Markus

Die E-Mail geht nicht so wirklich. Sie könne mir ja eine senden auf [email protected]

Hallo Michael,
ich wüsste zwar eine Möglichkeit wie Du feststellen kannst welcher Datensatz nicht mehr vorhanden ist bzw. neu hinzugekommen ist, aber das hilft dir ja nicht wirklich weiter.
Bei Deiner Problem fällt mir spontan die Konsolidierung in Excel ein, aber da ich bis dato noch nie ein konkretes Beispiel / Anforderung dazu hatte, habe ich mich mit dem Thema bis heute noch nicht beschäftigt.
Ich hoffe, ein anderer aus der wer.weiß.was-Familie konnte Dir weiter helfen.
Wenn nicht lass es mich wissen und wir suchen gemeinsam nach einer Lösung.
Gruß und schönes Wochenende
Petra aus Hamburg
P.s. Dieses Wochenende werde ich kaum Online insofern nicht böse sein, wenn ich mich erst am Montag melde.

Trotzdem mal vielen Dank
Für die Antwort

Hallo Michael,

hmmm, ich werde, ehrlich gesagt, aus Deiner Beschreibung nicht ganz schlau. Es hört sich so an, als ob Du bisher eine Excel-Liste hast und jetzt vom Lieferanten eine neue Liste bekommst, ebenfalls im .xls-Format. Warum benutzt Du dann nicht einfach die neue Liste des Lieferanten für das WaWi-Programm und schmeißt die alte Liste einfach weg??? Ich nehme an, daß hier erst im weiteren Verlauf das Problem entsteht oder? Werden die Daten über eine Schnittstelle weitergegeben oder irgendwie in eine Datenbank importiert?

Sorry, aber bräuchte mehr Infos, kann da so nicht viel zu sagen.

Gruß ausm Ruhrpott, STeffi