Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
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

Zahlen ab X kopieren

Zahlen ab X kopieren
07.12.2017 08:21:04
Michael
Guten Morgen,
ich habe eine riesen List mit verschiedenen Maßangaben. Die Maßangaben
stehen jedoch NICHT am Anfang, sondern mitten im Text und sind auch von den Stellen
her unterschiedlich. Da ist es schwer, aufsteigend zu sortieren.
Meine Idee ist, in der Zelle das "X" zu suchen und dann die Zahlen links vom "X" zu kopieren und in der Spalte daneben einzufügen. So könnte ich dann schön aufsteigen sortieren. Leider krieg ich das mit dem suchen und dem Zahlen "daneben" kopieren nicht hin. Hat jemand ne Idee?
VIELEN DANK
C45 RD 470X26 RM DIN7527 GESAEGT
C45 FL 80X50X85 RM DIN1017
C45 NUTENLEISTENPROF.48,3X15,3
C45 RD 75X235 RM DIN1013

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlen ab X kopieren
07.12.2017 09:26:25
guenni
suchst Du Formel- oder VBA- Lösung?
trifft es zu dass ein X auch im Produktnamen auftauchen kann?
ist es eine einmalige Aktion, oder wiederkehrend?
bei einmalig würde ich das mit Schrittweisen Hilfsspalten zu über 90 % lösn, und den Rest händisch fertig machen
Gruß,
Günther
AW: Zahlen ab X kopieren
07.12.2017 09:33:03
Michael
Hallo Günther,
das kommt immer wieder vor und nein, im Text gibt es kein X. Ich habe es jetzt halt mit Formeln versucht, weil ich mir da leichter tu. Das Problem in der Liste ist aber auch, dass ich auch Größenangaben ohne Länge (C45 4KT 180 DIN1014) habe. Wie soll ich da die 180 raus holen? Erst dachte ich, immer nach dem 2. Leer hab ich die Zahl, aber ich habe auch C45 RING N 384X340X74
also erst nach dem 3. Leer kommt da die Abmessung. Kann man es so machen, alles zu kopieren wo ein X vorkommt bis zu den ersten leer rechts und links?
Anzeige
AW: zum Ausprobieren
07.12.2017 11:08:01
Phi
@Michael
hier ein VBA Code, der erwartet, dass die Texte in A1:A4 stehen und die Zahl in Spalte B schreibt. Wenn die Logik passt, kann das geändert werden.

Sub Phi()
With CreateObject("vbscript.regexp")
.Pattern = "[0-9,]+X"
For i = 1 To 4
If .test(Cells(i, 1)) Then
Cells(i, 2) = Val(.Execute(Cells(i, 1))(0))
Else
Cells(i, 2) = "Fehler"
End If
Next i
End With
End Sub
Da manchmal ein Leerzeichen vor der Zahl steht und manchmal nicht, sind einfacherer Ansätze (Split()) nicht möglich.
AW: zum Ausprobieren
07.12.2017 11:33:44
Michael
Hi Phi,
das funktioniert schon ganz gut. Kannst da jetzt noch eine Zeile einbauen, das die Zahl vor " DIN" ausgibt? C45 RD 820 DIN7527 also 820
Anzeige
AW: nur mit X, nicht x
07.12.2017 12:12:44
Phi
@Michael
hier der angepasste Code. Falls ein kleines x im Text ist, bricht es ab.

Sub Phi()
With CreateObject("vbscript.regexp")
For i = 1 To Range("A1").End(xlDown).Row
If InStr(1, Cells(i, 1), "X", vbBinaryCompare) > 0 Then
.Pattern = "[0-9,]+X"
Z = .Execute(Cells(i, 1))(0)
Cells(i, 2) = Val(Replace(Z, ",", "."))
ElseIf InStr(1, Cells(i, 1), "DIN", vbBinaryCompare) > 0 Then
.Pattern = "[0-9,]+\sDIN"
Z = .Execute(Cells(i, 1))(0)
Cells(i, 2) = Val(Replace(Z, ",", "."))
Else
Cells(i, 2) = "Fehler"
End If
Next i
End With
End Sub

AW: nur mit X, nicht x
07.12.2017 12:39:56
Michael
Hi,
habe alle x groß gemacht, das makro bricht aber gleich ab
Laufzeitfehler '5':
Ungültiger Prozeduraufruf oder ungültiges Argument
Debuggen:
z = .Execute(Cells(i, 1))(0)
Anzeige
AW: Datei
07.12.2017 13:25:59
Phi
@Michael
hier meine Test-DAtei, die ohne Fehler durchläuft.
RegEx ist recht empfindlich gegen einzelne, unerwartete Zeichen. Wenn bei dir ein Fehler auftritt, zeige bitte den String, der nicht verarbeitet wird.
https://www.herber.de/bbs/user/118166.xlsm
AW: Zahlen ab X kopieren
07.12.2017 13:52:53
Chris
für die Zhal vor dem X (bis 9 Stellen) geht:
=MAX(WENNFEHLER(TEIL(A1;FINDEN("X";A1;1)-{1;2;3;4;5;6;7;8;9};{1;2;3;4;5;6;7;8;9})*1;""))
als MATRIXFORMEL eingeben!! (nicht nur enter sondern strg+shift+enter)
die Din bekommst du über
=WENNFEHLER(TEIL(A1;FINDEN("DIN";A1);WENNFEHLER(FINDEN(" ";A1;FINDEN("DIN";A1));LÄNGE(A1)) -FINDEN("DIN";A1));"")
für deine 4 beispiele klappt's ;)
Anzeige
AW: Version 2: etwas robuster
07.12.2017 14:01:20
Phi
@Michael
dieser Code ist leichter an weitere Varianten anzupassen.

Sub Phi2()
Pat = Array("[0-9,]+X", "[0-9,]+\sDIN")
With CreateObject("vbscript.regexp")
For i = 1 To Range("A1").End(xlDown).Row
Tx = Cells(i, "A") '                              >>>>>>>>
Cells(i, "C") = "Fehler" '                        >>>>>>
For p = 0 To UBound(Pat)
.Pattern = Pat(p)
If .test(Tx) Then
Z = .Execute(Tx)(0)
Cells(i, "C") = Val(Replace(Z, ",", ".")) '>>>>>>
Exit For
End If
Next p
Next i
End With
End Sub

Anzeige
AW: Version 2: etwas robuster
07.12.2017 15:48:50
Michael
Hi Phi,
das läuft perfekt - VIELEN DANK
Dank auch Dir Chris
AW: Zahlen ab X kopieren
07.12.2017 16:11:44
Michael
Hallo Phi,
kannst Du mal bitte, wenn Zeit und lust hast hinter die einzelnen Zeilen schreiben
was die genau macht. Ich Weiss das es eine Schleife ist und immer wieder die Zellen durchläuft
und sucht und werte zurück gibt, aber im Detail weiss ich es absolut nicht.
mein Level ist Makrorecorder und das abgespeicherte Makro bisserl modifizieren - das kann.
Danke, wäre sehr nett wenn dass mal machen könntest.
DANKE

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige