Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1108to1112
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 nach best. Kriterium Teilen

String nach best. Kriterium Teilen
Eddie
Guten Morgen,
ich habe mal eine Frage .-)
Ich habe immer einen String n solch einer Form: B = 1500, T = 320, H = 370 mm
Nun will ich gerne das so machen, das dieser String von einer Zelle in 3 Zellen aufgeteilt wird.
Also von A1: B = 1500, T = 320, H = 370 mm -------- A1 : 1500 B1: 320 C1: 370
Vielleicht könnte mir jemand einen Denkanstoß zur Realisierung geben ?
Gruß
Eddie

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
mal ne einfache Lösung
16.10.2009 09:22:11
WF
Hi Eddie,
Bedingung: die 3 Zahlen sind immer 3 - oder vierstellig
String steht in D1
in A1:
=TEIL(D1;5;5)*1
in B1:
=TEIL(D1;FINDEN("T";D1)+4;5)*1
in C1:
=TEIL(WECHSELN(D1;"m";);FINDEN("H";D1)+4;5)*1
Salut WF
AW: mal ne einfache Lösung
16.10.2009 11:06:55
JogyB
Hi.
Die Version von WF noch etwas verbessert... Leerzeichen und Länge der Zahlen sind egal, es muss nur vor der Zahl ein Gleicheitszeichen stehen, das Komma als Trennzeichen verwendet werden und die B/T/H müssen in dieser Reihenfolge sein. Ach ja, und die Werte müssen ganzzahlig sein... sonst müßte man das etwas anders machen (und Du brauchst auch ein anderes Trennzeichen).
Der Text steht in A2
Für B:
=TEIL(A2;SUCHEN("=";A2)+1;SUCHEN(",";A2)-SUCHEN("=";A2)-1)*1
oder
=TEIL(ERSETZEN(A2;SUCHEN("T";A2);999;);SUCHEN("=";A2)+1;999)*1
Für T:
=TEIL(A2;SUCHEN("=";A2;SUCHEN("T";A2))+1;SUCHEN("H";A2)-SUCHEN("=";A2;SUCHEN("T";A2))-1)*1
oder
=TEIL(ERSETZEN(A2;SUCHEN("H";A2)-1;999;"");SUCHEN("=";A2;SUCHEN("T";A2))+1;999)*1
Für H:
=TEIL(WECHSELN(A2;"m";);SUCHEN("=";A2;SUCHEN("H";A2))+1;999)*1
Gruss, Jogy
Anzeige
AW: String nach best. Kriterium Teilen
16.10.2009 09:38:26
Oberschlumpf
Hi Eddie
Und hier ne VBA-Lösung.
String steht wie gehabt in A1.
Sub sbSplit()
Dim lstrInhalt As String, lstrSplit() As String, liDurchlauf As Integer
lstrInhalt = Range("A1").Value
lstrSplit = Split(lstrInhalt, ",")
For liDurchlauf = 0 To UBound(lstrSplit)
Select Case liDurchlauf
Case LBound(lstrSplit)
Cells(1, liDurchlauf + 1).Value = Val(lstrSplit(liDurchlauf))
Case UBound(lstrSplit)
Cells(1, liDurchlauf + 1).Value = lstrSplit(liDurchlauf)
Cells(1, liDurchlauf + 1).Value = Replace(Cells(1, liDurchlauf + 1).Value, " mm", "")
Cells(1, liDurchlauf + 1).Value = Val(Right(lstrSplit(liDurchlauf), Len(lstrSplit( _
liDurchlauf)) - 5))
Case Else
Cells(1, liDurchlauf + 1).Value = Val(Right(lstrSplit(liDurchlauf), Len(lstrSplit( _
liDurchlauf)) - 4))
End Select
Next
End Sub
Hilfts denn?
Ciao
Thorsten
Anzeige
AW: String nach best. Kriterium Teilen
16.10.2009 09:49:13
Eddie
Hallo,
Danke ersteinmal euch beiden .. also die Version von WF klappt schon ganz gut, ur bei 2 Zeichen, wenn B : 1500mm und bei einen leerzeichen vor dem komma muss ich noch hand anlegen.
Bei der Version von Thorsten klappt es noch nicht so richtig, es wird erst einmal NUR die Zeile A ausgewertet, und bei mir steht dann zwar der aufgeplittete Wert, aber nicht richtig, als in B1 und C1 steht der richtige Wert, aber in A1 steht nun nur noch eine 0, auch wenn ich den Range("A1") auf A2 oder A3 ändere kommt zwar der Wert von den Zeilen, aber in A1 steht nie etwas .. kann man es vielleicht so machen, das der Wert nicht überschrieben wird ? .. also A1 = Wert B1-D1 sollen die aufgelisteten Werte stehen
Gruß
Eddie
Anzeige
AW: String nach best. Kriterium Teilen
16.10.2009 10:08:27
Heinz
Hallo Eddie,
hier eine weitere Möglichkeit, einmal für den Ausgangstext in A1:
Sub Splitten()
Dim iCol As Integer
Dim sTxt As String
sTxt = Range("A1").Value
sTxt = NurZahlenUndKomma(sTxt)
iCol = 1
Do While InStr(sTxt, ",")
iCol = iCol + 1
Cells(1, iCol).Value = Left(sTxt, InStr(sTxt, ",") - 1)
sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, ","))
Loop
Cells(1, iCol + 1).Value = sTxt
End Sub

Function NurZahlenUndKomma(Text As String) As String
Dim i%, tmp$
For i = 1 To Len(Text)
If IsNumeric(Mid(Text, i, 1)) Or Mid(Text, i, 1) = "," Then tmp = tmp & Mid(Text, i, 1)
Next i
NurZahlenUndKomma = tmp
End Function
Gruß
Heinz
Anzeige
AW: String nach best. Kriterium Teilen
16.10.2009 12:40:45
JogyB
Hi.
Noch etwas kürzer:
Function AUFTEILEN(myText As Range, nuM As Long) As Variant
Dim regEx
Set regEx = CreateObject("vbscript.regexp")
regEx.Pattern = "[^0-9]"
regEx.Global = True
AUFTEILEN = _
CDbl(Split(Evaluate("=TRIM(""" & regEx.Replace(myText.Value, " ") & """)"), " ")(nuM - 1))
End Function

Die einzelnen Werte bekommst Du, indem Du für nuM 1, 2 oder 3 einsetzt.
Gruss, Jogy
narrensicher mit WECHSELN
16.10.2009 10:26:58
WF
Hi,
in D2 (Hilfszelle) steht:
=GLÄTTEN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(D1;"B";" ");"=";" ");",";" ");"T";" ") ;"H";);"m";" "))
in A1:
=TEIL(D2;1;FINDEN(" ";D2))
in B1:
=TEIL(LINKS(WECHSELN(D2;" ";"#";2);FINDEN("#";WECHSELN(D2;" ";"#";2))-1);FINDEN(" "; LINKS(WECHSELN(D2;" ";"#";2);FINDEN("#";WECHSELN(D2;" ";"#";2))-1))+1;99)
in C1:
=TEIL(WECHSELN(D2;" ";"#";2);FINDEN("#";WECHSELN(D2;" ";"#";2))+1;99)
Salut WF
Anzeige
AW: String nach best. Kriterium Teilen
16.10.2009 11:09:10
Oberschlumpf
Hi Eddie
Stimmt leider, in der ersten Zelle wurde bisher nur 0 ausgegeben.
Aber...
"es wird erst einmal NUR die Zeile A ausgewertet"
Genau so wolltest du es doch auch - du hattest zuerst geschrieben:
Also von A1: B = 1500, T = 320, H = 370 mm -------- A1 : 1500 B1: 320 C1: 370
In deinem Start-Thread steht nix davon, dass es mehrere Zeilen betrifft.
und..
kann man es vielleicht so machen, das der Wert nicht überschrieben wird ?
Das war auch nicht dein Wunsch im Start-Thread.
Du hast ja jetzt noch andere Lösungsideen. Vielleicht ist das Passende ja dabei.
Wenn nicht, dann solltest du deine Fragen vielleicht zu Beginn etwas genauer formulieren.
Ciao
Thorsten
Anzeige
Danke e klappt .-)
16.10.2009 12:00:45
Eddie
Vielen Dank euch allen, die VBA Version von Heinz klappt recht gut (zwar nur für eine Zeile, aber eine Schleife machts für Alle Zeilen brauchbar :-) .... und @ WF - Deine Lösung habe ich jetzt bei mir eingebuat und es funktioniert auch SUPER - DANKE
@ Thorsten
Ja du hast schon recht, ich war mir der Aufgabenstellung nihct so ganz bewusst, was man noch hätte alles beachten sollen, trotzem auch nochmal danke für deine IDEE
Gruß und Mahlzeit
Eddie

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige