Anzeige
Archiv - Navigation
1780to1784
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Größen auslesen

Größen auslesen
08.09.2020 14:16:20
Nils
Hallo zusammen,
aus der in Spalte A hinterlegten Information sollen immer die Größen entsprechend der manuellen Eingabe in Spalte B und C herausgelöst werden.
https://www.herber.de/bbs/user/140126.xlsx
Diese Angaben sind je nach Produkt unterschiedlich in G, ML, KG etc. angegeben und auf zwei Spalten aufzuteilen.
In Ausnahmefällen kennzeichnet @ einen außer Vertrieb befindlichen Artikel, dieses Symbol soll bei der Abfrage ignoriert werden.
Ich habe versucht, mir mit einer „Teil“-Funktion oder ‚Text in Spalten‘ selbst zu helfen, bin aber an den unterschiedlich gestalteten Textlängen gescheitert.
Hat jemand eine Idee, wie man das mit einer Formel oder einem Makro lösen kann?
Danke vorab und viele Grüße
Nils

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Größen auslesen
08.09.2020 14:34:23
Joachim
Hallo Nils,
deine Ausgangsdaten weisen eine Regelmäßigkeit auf.
Die interessante Größe steht an letzter Stelle (es sei denn das @ steht an letzter Stelle).
Also hinter dem ersten Leerzeichen von rechts gesehen.
frage ab ob rechts ein @ steht
Wenn ja finde raus wo das rechteste Leerzeichen steht (Teil(a1;Länge(a1)-1;1)(Teil(a1;Länge(a1)-2;1)(Teil(a1;Länge(a1)-2;1)
Wenn Du weisst wo das Leerzeichen steht, hol dir den Text rechts davon und Schneide ggf. das @ ab.
Hilft Dir das schon als Weg, oder brauchst Du stärkere Unterstützung?
Gruß
AW: eine Möglichkeit dazu wäre ...
08.09.2020 14:41:19
neopa
Hallo Nils,
... wie folgt:
In C2 mit einer Formel die lupo mal aufgezeigt hat so:

=GLÄTTEN(RECHTS(WECHSELN(WECHSELN(A2;" @";"");" ";WIEDERHOLEN(" ";99));3))

und mit dieser Methode wäre es etwas erweitert dann auch für B2 zu realisieren, z.B. so:
=--WECHSELN(GLÄTTEN(RECHTS(WECHSELN(GLÄTTEN(LINKS(A2;SUCHEN(" "&C2&" ";A2&" ")));" ";WIEDERHOLEN(" ";99));5));".";",")
Beide Formeln nach unten kopieren.
Gruß Werner
.. , - ...
Anzeige
RegEx UDF
08.09.2020 14:54:36
ChrisL
Hi Nils
Weil mir RegEx gefällt, hier noch eine Alternativlösung. Code in ein Standardmodul kopieren und anschliessend als normale Formel verwendet:
=myRegExSpecial(A2;0)
=myRegExSpecial(A2;1)
Public Function myRegExSpecial(TextInput As String, intTeil As Integer) As String
Dim regEx As Object
Dim matches
Set regEx = CreateObject("VBscript.regexp")
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = "(\d+\ \w+)|(\d+\.\d+\ \w+)"
End With
If regEx.test(TextInput) Then
Set matches = regEx.Execute(TextInput)
myRegExSpecial = Split(matches(matches.Count - 1).Value, " ")(intTeil)
End If
End Function
cu
Chris
Anzeige
AW: RegEx UDF
08.09.2020 15:38:26
Günther
Moin Nils,
als Alternative ohne Formeln und ohne VBA bietet sich (natürlich) noch Power Query an...
 
Gruß
Günther  |  mein Excel-Blog
oder Power-Query
08.09.2020 16:50:33
ChrisL
Hi Günther
Stimmt PQ geht erstaunlich einfach, weil "Spalte nach Trennzeichen teilen" die Option "Beim äussersten rechten Trennzeichen" bietet (von rechts nach links).
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Ausgangsdaten", type text}}),
#"Duplizierte Spalte" = Table.DuplicateColumn(#"Geänderter Typ", "Ausgangsdaten", "Ausgangsdaten - Kopie"),
#"Ersetzter Wert" = Table.ReplaceValue(#"Duplizierte Spalte"," @","",Replacer.ReplaceText,{"Ausgangsdaten - Kopie"}),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Ersetzter Wert", "Ausgangsdaten - Kopie", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, true), {"Ausgangsdaten - Kopie.1", "Ausgangsdaten - Kopie.2"}),
#"Spalte nach Trennzeichen teilen1" = Table.SplitColumn(#"Spalte nach Trennzeichen teilen", "Ausgangsdaten - Kopie.1", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, true), {"Ausgangsdaten - Kopie.1.1", "Ausgangsdaten - Kopie.1.2"}),
#"Geänderter Typ2" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen1",{{"Ausgangsdaten - Kopie.1.1", type text}, {"Ausgangsdaten - Kopie.1.2", type number}}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Geänderter Typ2",{"Ausgangsdaten - Kopie.1.1"})
in
#"Entfernte Spalten"
cu
Chris
Anzeige
AW: oder Power-Query
08.09.2020 17:15:44
Günther
Ja, ich hatte das fast genau so gemacht ... ;-) Das ist wirklich ein problemloser Weg, der gut erlernbar ist.
 
Gruß
Günther  |  mein Excel-Blog
GLÄWEXWDH
08.09.2020 16:22:24
lupo1
B2[:C2]: =GLÄTTEN(WECHSELN(RECHTS(WECHSELN(WECHSELN($A2;" @";);" ";WIEDERHOLEN(" ";99));297-SPALTE(A2)*99);C2;))
Zu dem Dezimalpunkt hatte ich jetzt keine Lust mehr. Das kannst Du vorher machen.
hab neopa nicht gesehen ... danke!
08.09.2020 16:24:09
lupo1
AW: hab neopa nicht gesehen ... danke!
08.09.2020 16:46:40
Nils
Hallo zusammen,
herzlichen Dank für die vielen Ansätze. Das hätte ich definitiv nicht selbst herausgearbeitet und es hilft mir für eine bevorstehende Analyse sehr!
Viele Grüße,
Nils
Anzeige
AW: Größen auslesen
08.09.2020 17:17:14
Daniel
HI
mal ein Anzsatz mit Text in Spalten:
1. Teile den Text mit TEXT IN SPALTEN und dem Leerzeichen als Trenner auf.
füge dabei die Werte ab Spalte D ein. Hierbei kannst du auch gleich einstellen, dass du den Punkt als Dezimalzeichen hast.
2. die Werte kannst du dann so auslesen:
B2: =INDEX($E2:$z2;1;ANZAHL2($E2:$z2)-1-ZÄHLENWENN($E2:$z2;"@"))
C2: =INDEX($E2:$z2;1;ANZAHL2($E2:$z2)-0-ZÄHLENWENN($E2:$z2;"@"))
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige