yannosch
Goto Top

VBA Powershell CSV bestimmte Begriffe aus einer Spalte in neue Spalte der selben Zeile bringen

Hallo zusammen

IST-Zustand der zu bearbeitenden CSV:
Artikel;Kurzbez.;MOQ;
234087;bla bla **2000pcs**/bag;;
234987; bla bla bla **20000pcs**/rail;;
987543; bla **4000pcs**/bag;;

usw....

Nun möchte ich das die Zahl die VOR "pcs" steht in die Spalte "MOQ" der selben Zeile gebracht wird.
Quasie so:

Artikel;Kurzbez.;MOQ;
234087;bla bla **2000pcs**/bag;**2000**;
234987; bla bla bla **20000pcs**/rail;**20000**;
987543; bla **4000pcs**/bag;**4000**;

Hat jemand eine Idee wie ich sowas realisieren kann?

Ich dachte an VBA oder Powershell...
Bin für jede Hilfe dankbar! face-smile

Content-Key: 316337

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

Printed on: April 24, 2024 at 12:04 o'clock

Member: H41mSh1C0R
H41mSh1C0R Sep 27, 2016 updated at 13:45:44 (UTC)
Goto Top
Hi,

hast du denn schon einen Ansatz?

Ein Ansatz:

Suche den String pro Zeile der * *.....pcs* * enhält, entferne die ersten 2 und die letzten 5 Zeichen. Das was übrig bleibt ist deine Zahl.
Dann suchst du ";;" da ja scheinbar die letzte Spalte leer ist und ersetzt ";;" mit ";"+Zahl+";".

Gruß
Member: colinardo
Solution colinardo Sep 27, 2016, updated at Sep 28, 2016 at 07:43:55 (UTC)
Goto Top
Wenns weiter nichts ist face-smile
$csv = Import-CSV 'c:\daten.csv' -Delimiter ';'  
$csv | %{
   $_.MOQ = [regex]::match($_.'Kurzbez.','(?i)(\d+)pcs').Groups[1].Value  
}
$csv | export-CSV 'c:\Daten_neu.csv' -Delimiter ';' -NoType -Encoding UTF8  
Leute lernt "Regular Expressions"

Viele Grüße Uwe
Member: Yannosch
Yannosch Sep 27, 2016 at 13:47:51 (UTC)
Goto Top
stimmt, danke für den Hinweis ...

habe grad nur gesehen, dass immer "Zahl+pcs" gleich ist die ** sind nur manchmal da ..
Dann wird es wieder schwierig .. weil ich keinen Anfangspunkt habe .. -.-
Member: H41mSh1C0R
H41mSh1C0R Sep 27, 2016 updated at 13:51:33 (UTC)
Goto Top
Wenn ab und an * * dabei sein und mal nicht hast du 2 Checks. Einmal mit ;<Zahl>pcs; und einmal * *<Zahl>pcs* *.

Oder seh ich das falsch?
Member: Yannosch
Yannosch Sep 27, 2016 at 13:58:21 (UTC)
Goto Top
Zitat von @colinardo:

Wenns weiter nichts ist face-smile
> $csv = Import-CSV 'c:\daten.csv' -Delimiter ';'  
> $csv | %{
>  $_.MOQ = $_.'Kurzbez.' -Replace '.*?(\d+)pcs.*','$1'  
> }
> $csv | export-CSV 'c:\Daten_neu.csv' -Delimiter ';' -NoType -Encoding UTF8  
> 
Leute lernt "Regular Expressions"

Viele Grüße Uwe

Hey Uwe,

wenn kein "pcs" gefunden wird wird die komplette Spalte nach "MOQ" kopiert.

UND:
wenn es "540pcs." sind wird nur die "0" kopiert.
bei "69" nur die "9" usw.

Schonmal Danke für deine super Hilfe!
Yannosch
Member: colinardo
Solution colinardo Sep 27, 2016 at 13:59:57 (UTC)
Goto Top
Ich hatte es oben abgeändert
Member: Yannosch
Yannosch Sep 27, 2016 at 14:01:15 (UTC)
Goto Top
Zitat von @H41mSh1C0R:

Wenn ab und an * * dabei sein und mal nicht hast du 2 Checks. Einmal mit ;<Zahl>pcs; und einmal * *<Zahl>pcs* *.

Oder seh ich das falsch?


Ich sehe die Schwierigkeit darin:

du suchst nach "pcs" und willst X-Stellen davor [X deshalb, weil du nicht weißt ob es 2,3,oder 4 Stellen davor sind] in als string in die spalte MOQ der selben Zeile kopieren.

wie schaffe ich es festzulegen, dass nur die Zahlenwerte vor pcs genommen werden?

liebe Grüße
Yannosch
Member: colinardo
Solution colinardo Sep 27, 2016 updated at 14:05:19 (UTC)
Goto Top
Sorry bin gerade am Smartphone da ist das alles etwas Zeitverzögert. Update siehe oben.
Member: Yannosch
Yannosch Sep 27, 2016 at 14:05:59 (UTC)
Goto Top
Zitat von @colinardo:

Ich hatte es oben abgeändert

Die Daten werden nun zwar richtig erkannt, allerdings nicht in die Zeile MOQ geschrieben.
Bleiben einfach im Script stehen. face-confused
Member: colinardo
colinardo Sep 27, 2016 updated at 14:15:43 (UTC)
Goto Top
Zeitverzögerung ... nochmal kopieren bitte face-smile
Die verdammischte Korrekturfunktion ;-( am Smartphone hat derbe zugeschlagen...
Member: Yannosch
Yannosch Sep 28, 2016 at 06:17:29 (UTC)
Goto Top
Gar kein Problem!
Wieder mal eine PERFEKTE Problemlösung von dir.

Könnte die Ergebnisse einfach aus der Shell kopieren und in die neue Datei einfügen - ging ohne Probleme face-big-smile

Danke dir!
Gruß Yannosch
Member: colinardo
Solution colinardo Sep 28, 2016 updated at 06:21:22 (UTC)
Goto Top
Keine Ursache face-smile

p.s. Ich habe inzwischen dem gestern sehr hartnäckigen Smartphone das Vorlaute ändern meines Geschreibsels abgewöhnt, das war ja eine Katastrophe face-wink. Wenn man viel Code schreibt sind die Dinger nicht zu gebrauchen.