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
Genau, dass wäre dann mal mittels VBA möglich.
Die Vorgehensweise ist dem entsprechend nicht so schwierig. Die Vorgehensweise:
Alles selektieren (tabelle1.cells.select)
Sortieren nach der Artikelnummer (Beispiel Spalte D)
Selection.Sort Key1:=Range(„D1“), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Kundentabelle in das Tabellenblat2 z.B. Einfügen
Tabellenblatt2 auch Sortieren nach Artikelnummern
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
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
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
Bin echt schon am verzweifeln.
e-mail: [email protected]
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.
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.
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.