Hallo zusammen,
Erstmal vorweg, ich bin totaler VBA Anfänger also habt Gnade ;)
Ich hoffe ihr könnt mir bei folgendem Problem helfen: In meiner Abteilung pflegen wir eine Stammdaten Datei in der wir neue Mat-Nr aus SAP aufnehmen und bestimmte Parameter/Informationen pflegen. Viele dieser Infos leiten sich direkt aus dem Mat-Nr bzw. Mat-Namen ab.
ein typischer Mat-Name sieht z.B wie folgt aus
Produktname Stärke Darreichungsform (AnzahlBlister)x(Anzahl Tabletten) Verpackung Land
z.B
"Aspirin 5mg Tab 3x10 BLS DE"
Mein Makro soll jetzt aus dieser Mat-Beschreibung die verschiedenen Informationen auslesen und damit die einzelnen Spalten der Stammdaten-Datei füllen.
z.B
Land = DE, Stärke = 5mg
Klappt auch größtenteils gut, jedoch habe ich Probleme bei der "(AnzahlBlister)x(Anzahl Tabletten)", hier soll das Makro quasi einmal die Zahl links vom x und einmal rechts vom x finden.
Meine Formelt dafür lautet:
Cells(i, 16).FormulaR1C1 = "=MID(RC2,SEARCH(""#"",SUBSTITUTE(RC2,"" "",""#"",3))+1,SEARCH(""#"",SUBSTITUTE(RC2,"" "",""#"",4))- SEARCH(""#"",SUBSTITUTE(RC2,"" "",""#"",3))-1)"
Cells(i, 16).Value = Cells(i, 16).Value
Then Cells(i, 17).FormulaR1C1 = "=TRIM(LEFT(RC[-1],SEARCH(""x"",RC[-1])-1))"
Cells(i, 17).Value = Cells(i, 17).Value
Then Cells(i, 18).FormulaR1C1 = "=RIGHT(RC[-2],(LEN(RC[-2])-SEARCH(""x"",RC[-2])))"
Cells(i, 18).Value = Cells(i, 18).Value
Ich suche quasi nach dem Text-Baustein nach dem 3ten Leerzeichen von Links ("3x10" im obigen Beispiel) und gebe dann in Zelle(i, 17) die Zahl links vom x und in Zelle (i, 18) rechts vom x wieder.
Das passt soweit auch für ein Großtei der Mat-Nummern. Leider gibt es aber auch Mat-Nr die nicht der Standard Nomenklatur folgen.
z.B lautet der Name dann
"Aspirin XL 5mg Tab 3x10 BLS DE"
Durch das zusätzliche XL habe ich ein extra Leerzeichen im Namen und meine Formel funktioniert nicht mehr. Es kann auch genauso gut sein dass am rechten Ende des Namens irdendetwas anders ist, so dass ein Zählen der Freizeichen von rechts auch nicht helfen würde.
Habt ihr einen Vorschlag wie man das Problem lösen kann? Gibt es irgendeine Funktion mit der vba den Baustein (AnzahlBlister)x(Anzahl Tabletten) verlässtlich findet? Leider kann dieser ziemlich unterschiedlich aussehen:
3x10
1x100
1x10/4x10
1x1
etc.
Vielen Dank für eure Hilfe im Voraus.
Grüße
|