Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: Jochen_Sch am Januar 19, 2018, 08:48:57 Vormittag
-
Hallo zusammen,
wie kann ich in Excel aus einer Zelle in der Zahlen und Text vermischt ist die Zahlenwerte in eigene Spalten extrahieren?
Hier ein Beispiel:
In der Zelle H121 steht folgendes: "Verpackungsrohr 4,3x6,9cm zu #7637"; Hier soll der Wert 4,3 in die Spalte Z121 und der Wert 6,9 soll dann in AA121.
Spaltenüberschrift von Z: Länge
Spaltenüberschrift von AA: Breite
Spaltenüberschrift von AB: Höhe
Spaltenüberschrift von AC: Durchmesser
Herausforderung:
Da es eine größere Datei ist und die Maßangaben auch mit anderen Werten und Formaten (Stellen vor und hinter dem Komma ist unterschiedlich). Weiterhin kann es sein, dass es nur ein Wert gibt oder auch 3 oder 4 Werte. Die Kombination "mm" oder "cm" oder "m" sind im Regelfall immer mit angegeben sowie das Zeichen "X" dass aber mal groß oder auch klein und mal mit und ohne Leerzeichen gechrieben ist.
Weitere Herausforderung:
In Spalte AC sollen Zahlenwerte, die entweder Symbole "ø" oder das Wort Durchmesser oder das Wort "DM" (egal ob Groß oder Kleingeschrieben) steht.
Beispiel: Zelleninhalt H452: "Halterung RAL9006 PP GF30 2012 ø50,8mm Label silber"
Hier soll nur der Wert 50,8 in die Zelle AC452.
Ich kann ja in jede Spalte eine eigene Formel hinterlegen, aber welche Formel muss wo rein?
Spaltenüberschrift von Z: Länge
Formel: ??
Spaltenüberschrift von AA: Breite
Formel: ??
Spaltenüberschrift von AB: Höhe
Formel: ??
Spaltenüberschrift von AC: Durchmesser
Formel: ??
-
Hallo,
das wird - ob nun per Formel oder VBA - nur funktionieren, wenn eine Regel aus den einzelnen Texten hergeleitet werden kann.
Ansonsten wird's immer Fehler geben. Z.B. hier "Verpackungsrohr 4,3x6,9cm zu #7637" könnte man sagen, finde das Leerzeichen
vor der 4 und nach cm und parse den Textteil. Klappt hiermit "Halterung RAL9006 PP GF30 2012 ø50,8mm Label silber" schon
nicht mehr.
Somit: das Finden einer gültigen Parserregel für alle Texte wäre die eigentliche Aufgabe.
Gruß
-
Z121[:AC121]:
=WENNFEHLER(
WENN(SPALTE(Z121)=29;
--TEIL(WECHSELN(TEIL($H121;SUCHEN("ø";$H121)+1;99);"mm";" ");1;SUCHEN(" ";TEIL($H121;SUCHEN("ø";$H121)+1;99))-2);
--GLÄTTEN(TEIL(WECHSELN(GLÄTTEN(WECHSELN(WECHSELN($H121;"x";" ");"cm";" "));" ";WIEDERHOLEN(" ";99));SPALTE(B121)*99-98;99)))
;"")
Den Rest: manuell oder WECHSELN-Erweiterungen um cm und m (m als letztes!)
-
Hallo Lupo1,
vielen Dank für die schnelle Hilfe.
1. Frage:
Worauf soll sich "SPALTE(B121)" beziehen? Was sollte hier drinn stehen oder soll dieser Bezug auf eine "leere" Zelle sein?
2. Frage:
Ich habe diese Formel in Spalte Z, AA, AB und AC eingefügt und bekomme aber leider nur die ersten beiden Spalten "Z" und "AA" mit den richtigen Werten gefüllt. Die beiden anderen Spalten "AB" und "AC" werden leider nicht gefüllt mit Werten.
Beispiel:
Spalte H2881 = "Verdrahtungskanal steingrau PVC 2000x60x60mm"
Formel in Zelle Z2881:
=WENNFEHLER(WENN(SPALTE(Z2881)=29;--TEIL(WECHSELN(TEIL($H2881;SUCHEN("ø";$H2881)+1;99);"mm";" ");1;SUCHEN(" ";TEIL($H2881;SUCHEN("ø";$H2881)+1;99))-2);
--GLÄTTEN(TEIL(WECHSELN(GLÄTTEN(WECHSELN(WECHSELN($H2881;"x";" ");"cm";" "));" ";WIEDERHOLEN(" ";99));SPALTE(B2881)*99-98;99)));"")
Wert in Zelle Z2881: 60,00
Formel in Zelle AA2881:
==WENNFEHLER(WENN(SPALTE(AA2881)=29;--TEIL(WECHSELN(TEIL($H2881;SUCHEN("ø";$H2881)+1;99);"mm";" ");1;SUCHEN(" ";TEIL($H2881;SUCHEN("ø";$H2881)+1;99))-2);
--GLÄTTEN(TEIL(WECHSELN(GLÄTTEN(WECHSELN(WECHSELN($H2881;"x";" ");"cm";" "));" ";WIEDERHOLEN(" ";99));SPALTE(C2881)*99-98;99)));"")
Wert in Zelle AA2881: leeres Feld
Formel in Zelle AB2881:
==WENNFEHLER(WENN(SPALTE(AB2881)=29;--TEIL(WECHSELN(TEIL($H2881;SUCHEN("ø";$H2881)+1;99);"mm";" ");1;SUCHEN(" ";TEIL($H2881;SUCHEN("ø";$H2881)+1;99))-2);
--GLÄTTEN(TEIL(WECHSELN(GLÄTTEN(WECHSELN(WECHSELN($H2881;"x";" ");"cm";" "));" ";WIEDERHOLEN(" ";99));SPALTE(D2881)*99-98;99)));"")
Wert in Zelle AB2881: leeres Feld
Formel in Zelle AC2881:
==WENNFEHLER(WENN(SPALTE(AB2881)=29;--TEIL(WECHSELN(TEIL($H2881;SUCHEN("ø";$H2881)+1;99);"mm";" ");1;SUCHEN(" ";TEIL($H2881;SUCHEN("ø";$H2881)+1;99))-2);
--GLÄTTEN(TEIL(WECHSELN(GLÄTTEN(WECHSELN(WECHSELN($H2881;"x";" ");"cm";" "));" ";WIEDERHOLEN(" ";99));SPALTE(E2881)*99-98;99)));"")
Wert in Zelle AC2881: leeres Feld
Wo könnte mein Fehler liegen?
-
Da es eine Universal-Formel ist, bleibt entweder Z:AB oder AC frei.
AB klappt aus folgenden Gründen nicht:
- Du musst auch mm und m WECHSELN, nicht nur cm (im SONST-Teil). Das hatte ich schon gefordert.
- Das Parsing (siehe maninweb) klappt nicht, weil Du Feldtrenner auch als Worttrenner einsetzst. Das ist Dir also auch bekannt. Daher dann leider manuell:
"VerdrahtungskanalsteingrauPVC 2000x60x60mm" statt
"Verdrahtungskanal steingrau PVC 2000x60x60mm"