Anzeige
Archiv - Navigation
1496to1500
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

String auslesen

String auslesen
15.06.2016 16:49:27
Lukas
Hallo Experten,
ich kriege folgendes einfach nicht gelöst:
wie kann ich aus einer Excel Zelle mit folgendem Muster
12-123_2-Herren-WC-123
den Textteil (herren-WC) auslesen und in eine Nachbarzelle kopieren ohne dass der Bindestrich zwischen Herren und WC verschwindet? Habe es bisher nur geschafft (HerrenWC) auszulesen mit Hilfe eines kleines VBA Codes. Das String Muster varieert in der Länge und Wortlogik daher wäre mein Denkansatz zu schauen, dass ich "ab dem ersten gefundenen Buchstabe bis zum letzten gefundenen Buchstabe" auslese. kann man das in eine Formel verwandeln oder daraus einen VBA Code basteln?
Vielen Dank

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

Betreff
Datum
Anwender
Anzeige
AW: String auslesen
15.06.2016 17:11:51
ChrisL
Hi Lukas
Vielleicht so...
Sub test() MsgBox StringTeil("12-123_2-Herren-WC-123") End Sub
Function StringTeil(sText As String) As String
Dim i As Integer
Dim iStart As Integer, iEnde As Integer
For i = 1 To Len(sText)
If iStart = 0 And Not IsNumeric(Mid(sText, i, 1)) And _
Mid(sText, i, 1)  "-" And Mid(sText, i, 1)  "_" Then
iStart = i
End If
If iStart > 0 And IsNumeric(Mid(sText, i, 1)) Then
iEnde = i
Exit For
End If
Next i
StringTeil = Mid(sText, iStart, iEnde - iStart - 1)
End Function

cu
Chris

AW: String auslesen
15.06.2016 17:44:03
Lukas
Hi Chris,
vielen Dank für die schnelle Antwort, also ich habs jetzt grad nur auf meiner Word for Mac Version getestet und erhalte die Msg Box aber es wird nichts in die Nachbarzelle kopiert?
Also Ziel wäre Bsp. Spalte A , Zeile 1 steht 12-123_2-Herren-WC-123 und in Spalte B Zeile 1 steht nur Herren-WC ohne den Rest. Wiegesagt kann auch z.B. 14-231-WR-SAN_EIN-12 heißen oder dergleichen. Dann würde ich gern WR-SAN_EIN in der Nachbarzelle stehen haben
Grüße

Anzeige
AW: String auslesen
15.06.2016 17:50:31
ChrisL
Hi Lukas
in die Nachbarzelle kannst du schreiben
=StringTeil(A1)
Oder du bastelst die noch eine Schleife z.B.
For i = 1 To 1000
Cells(i,2) = StringTeil(Cells(i,1))
Next i
cu
Chris

AW: String auslesen
15.06.2016 18:30:26
Lukas
Ah okay danke jetzT hat es geklappt, jetzt ist mir aber noch das Problem gekommen wenn der Text am Ende z.B. stehen sollte er nicht berücksichtigt wird. kann man noch iwie einfügen, dass solang es sich um text handelt es nicht abgeschnitten werden soll?
so z.B. 23-123-SAN-WC, soll mir dann in die Nachbarzelle SAN-WC
Danke!

AW: String auslesen
16.06.2016 08:47:54
ChrisL
Hi Lukas
Der Vollständigkeit halber...
Function StringTeil(sText As String) As String
Dim i As Integer
Dim iStart As Integer, iEnde As Integer
For i = 1 To Len(sText)
If iStart = 0 And Not IsNumeric(Mid(sText, i, 1)) And _
Mid(sText, i, 1)  "-" And Mid(sText, i, 1)  "_" Then
iStart = i
End If
If iStart > 0 And IsNumeric(Mid(sText, i, 1)) Then
iEnde = i
Exit For
End If
Next i
If iEnde = 0 Then
StringTeil = Right(sText, Len(sText) - iStart + 1)
Else
StringTeil = Mid(sText, iStart, iEnde - iStart - 1)
End If
End Function

cu
Chris

Anzeige
AW: String auslesen
16.06.2016 10:49:45
Lukas
Danke dir vielmals

AW: evtl. alternativ eine Formellösung ...
15.06.2016 19:03:20
...
Hallo Lukas,
... für einen Text mit max 99 Zeichen Länge (andernfalls müsste die Formel entsprechend angepasst werden) und eine Excelversion ab 2010 (weil es nur ab da die Funktion AGGREGAT() andernfalls würde meine Formellösung nur noch länger)
Text in A1, Formel in Nachbarzelle:
 AB
112-456_8901-ein-Herren-WC-Becken-2345678ein-Herren-WC-Becken
223-123-SAN-WCSAN-WC
3ein SAN-WC-Becken-123ein SAN-WC-Beck
4  

Formeln der Tabelle
ZelleFormel
B1=WENNFEHLER(TEIL(A1;AGGREGAT(15;6;ZEILE(A$1:A99)/(CODE(TEIL(GROSS(A1); ZEILE(A$1:A99); 1))>64)/(CODE(TEIL(GROSS(A1); ZEILE(A$1:A99); 1))<91); 1); SUMME(AGGREGAT({14.15};6;ZEILE(A$1:A99)/(CODE(TEIL(GROSS(A1); ZEILE(A1:A99); 1))>64)/(CODE(TEIL(GROSS(A1); ZEILE(A$1:A99); 1))<91); 1)*{1.-1})+1); "")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...

Anzeige
AW: evtl. alternativ eine Formellösung ...
15.06.2016 19:14:45
Lukas
Geile Sache, danke Werner!

AW: ein Dollar bzw. ein -Zeichen fehlte noch ...
16.06.2016 10:00:18
...
Hallo Lukas,
... und zwar in der zweiten Formelzeile ganz rechts muss es anstelle ...ZEILE(A1:A99); ...ZEILE(A$1:A99) lauten, dann würde in B3 auch die momentan fehlenden "en" am Ende noch ausgegeben werden.
Gruß Werner
.. , - ...

AW: ein Dollar bzw. ein -Zeichen fehlte noch ...
16.06.2016 10:50:23
Lukas
Ah ist mir noch gar nicht aufgefallen =) Klasse Danke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige