koecheler
Goto Top

Nur vorhandene Artikel aus CSV2-Liste in CSV1-Liste behalten, Restliche Zeilen löschen. Wie?

Ich habe eine Artikel-Liste mit ca. 80.000 Einträgen im CSV-Format. Darin sind enthalten Artikel-Nr., Bezeichnung und Preis. Jetzt möchte ich die Preise updaten. Dazu habe ich eine aktuelle Preisliste bekommen. Allerdings beinhaltet diese den kompletten Datenstamm des Herstellers. Das sind ca. 1Mio. Einträge. Diese Liste ist ebenfalls im CSV-Format.

Jetzt kann ich diese zwar in mein Warenwirtschafts-Programm importieren, aber ich möchte nicht 920.000 Leichen im Artikelstamm haben.

Jetzt ist meine Frage: Kann ich die neue Preisliste schrumpfen in dem ich sie mit meiner Artikel-Liste vergleiche und ein Tool, Batch, Excel oder Notepad++-Plugin die nicht benötigten Zeilen einfach löscht?

Am Ende sollte quasi die neue Preisliste nur noch die Artikel enthalten, die auch in meiner Artikel-Liste drin sind.

Habt Ihr für mich einen Tipp wie ich da vorgehen sollte?

Danke schon mal im Vorraus....

Content-ID: 297382

Url: https://administrator.de/contentid/297382

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

Johnny-CGN
Johnny-CGN 26.02.2016 aktualisiert um 01:17:53 Uhr
Goto Top
Muss das selbe auch täglich machen, ist nicht die eleganteste aber vielleicht zumindest erstmal eine schnelle Lösung:
Excel
Importier beide CVSs auf je ein Blatt, nimm ein drittes und dann per SVERWEIS weiter.
(Daten, Import aus Text, bei ganzzahlingen SKUs, wie zb EANs die Spalte als Text markieren, damit Excel keine Exponentialzahl draus macht)
Zieh dir ein die erste Spalte die SKUs aus deinem Bestandsblatt:
A1 nennst Artikelnummer, bzw SKU
In A2 kommt "=Tabelle1!A1"
B2 nennst Preis
In B2 kommt =WENNFEHLER(SVERWEIS(A2;Tabelle1!$A$2:$B$80000;2;FALSCH);"nicht mein bestand")
Tabelle1 ist jeweils mit dem Blattnamen der GroßhändlerCSV zu ersetzen.
Das B Verweist aus das Ende der Suchmatrix und ggf, je nachdem in welcher Spalte der Preis steht zu erweitern, die 2 hinter dem Semikolon entsprechend auch.

Das ganze dann einfach nach unten ziehen, entsprechend der Anzahl an Artieln die in deiner BestandsCSV sind.

Danach setzt in die Kopfzeilen einfach einen Autofilter und Filters die "nicht mein bestand"-Zeilen raus.

Klingt kompliziert, in der Praxis aber nur 2 min Arbeit.

Wichtig, vor dem Speichern die gefilterte Liste auf ein weiteres Blatt kopieren, damit die rausgefilterten Zeilen nicht mit gespeichert werden.
127132
127132 26.02.2016 um 07:33:41 Uhr
Goto Top
Naja, ich würde den SVERWEIS zwar bereits bei den Preisen der bestehenden Artikeln einfügen. Inhalte der so entstandenen neuen Preisspalte dann in die Spalte der alten Preise kopieren und die SVERWEIS-Spalte löschen. Muss man nix filtern.
Aber SVERWEIS ist da schon richtig.
colinardo
colinardo 26.02.2016 aktualisiert um 09:43:00 Uhr
Goto Top
Hallo zusammen,
Papperlapapp, mit Powershell ist das schnell umgesetzt.
Wenn deine Spalte die die Artikelnummern beinhaltet 'ArtNr' lautet ist das so schnell erledigt:
In den ersten drei Zeilen die Pfade und Trennzeichen entsprechend an die Umgebung anpassen.
$csvAlt = Import-Csv 'C:\PreiseAlt.csv' -Delimiter ";"  
$csvNeu = Import-Csv 'C:\PreiseNeu.csv' -Delimiter ";"  
$csvResult = 'C:\result.csv'  

Compare $csvNeu $csvAlt -Property 'ArtNr' -IncludeEqual -ExcludeDifferent -PassThru | select * -ExcludeProperty SideIndicator | export-csv $csvResult -Delimiter ";" -NoType -Encoding UTF8  
Grüße Uwe
koecheler
koecheler 26.02.2016 um 17:10:49 Uhr
Goto Top
Ich werde mal alle drei Versionen probieren, schon allein Rein aus Interesse. Wobei die Lösung mit Powershell sich am logischten anhört. Aber auch die Excel-Variante hört sich plausibel an. Melde mich, wenn ich erfolgreich das ganze ausprobiert habe.
Vielen Dank für die schnelle Hilfe!