Hallo,
ich habe eine Zeichenfolge mit Messwerten, die innerhalb von Tags stehen, welche die Zahlenfolge kennzeichnen: 123 256 125 278 189. Mit der MID Zuweisung ist es möglich, den Beginn und die Länge der Zahlenfolge festzulegen, allerdings ist die Länge der Zahlenfolge variabel. Wenn ich die Angabe der Länge weglasse, hängt am Ende dann noch immer der Tag . Wie kann ich festlegen, dass die Zahlenfolge vor dem Tag endet, bzw. dass sich Zahlen tatsächlich nur innerhalb der beiden Tags befinden?
Kann mir jemand Hilfestelllung geben?
Danke, Heiko
Hi Heiko,
so schneidest Du die Tags variabel ab:
Sub Länge()
Dim z$, l%
z = "<123 456 789>"
l = Len(z)
z = Mid(z, 2, l - 2)
Msgbox z
End Sub
Ciao, Ralf
AW: Text von Zahlen trennen
19.07.2005 11:11:01
Zahlen
gibt es irgendein zeichen zwischen den zahlen und dein text?
AW: Text von Zahlen trennen
19.07.2005 11:43:42
Zahlen
Hi, Tales,
Die Zahlenfolge ist durch xml bzw. html Tags begrenzt. Sorry, ich hatte nicht darauf geachtet, dass diese hier nicht dargestellt werden können. Die Zahlenfolge sieht so aus (habe die Dreiecks- Klammern durch runde ersetzt):
(Zahlenfolge)123 123 234 345 456(/Zahlenfolge)
Heiko
AW: Text von Zahlen trennen
19.07.2005 12:27:08
Zahlen
Hallo Heiko;
ein Beispiel;
trennt alle Zahlen vom Text:
Text
A
B
C
1117
1118
A3336662233Teil A
3336662233
1119
AS1213456Teil A/B
1213456
1120
ASDFG1213456Teil A/C
1213456
Formeln der Tabelle
C1118 : {=TEIL(A1118;VERGLEICH(1;ISTZAHL(TEIL(A1118;SPALTE(721:721);1)-1)*1;0);SUMME(ISTZAHL(TEIL(A1118;SPALTE(721:721);1)-1)*1;0))}
C1119 : {=TEIL(A1119;VERGLEICH(1;ISTZAHL(TEIL(A1119;SPALTE(722:722);1)-1)*1;0);SUMME(ISTZAHL(TEIL(A1119;SPALTE(722:722);1)-1)*1;0))}
C1120 : {=TEIL(A1120;VERGLEICH(1;ISTZAHL(TEIL(A1120;SPALTE(723:723);1)-1)*1;0);SUMME(ISTZAHL(TEIL(A1120;SPALTE(723:723);1)-1)*1;0))} Enthält Matrixformel: Umrandende { } nicht miteingeben, sondern Formel mit STRG+SHIFT+RETURN abschließen!
Hallo
hier ein Beispiel:
Die Muster Zahlenfolgen mit Tags kannst du ja anpassen:
A
B
C
D
E
1
Tag vorne
<888>
Tag hinten
</999>
2
<888>123 222 234 333 456</999>
123 222 234 333 456
3
<888>123 444 234 555 456</999>
123 444 234 555 456
4
<888>123 666 234 777 456</999>
123 666 234 777 456
5
<888>123 888 234 999 456</999>
123 888 234 999 456
6
<888>123 000 234 111 456</999>
123 000 234 111 456
Formeln der Tabelle
B2 : =WECHSELN(WECHSELN(A2;$E$1;"");$C$1;"")
Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Text von Zahlen trennen
19.07.2005 13:46:19
Zahlen
Hallo, Uwe,
danke für die Antwort. Ist aber leider nicht ganz, wonach ich suche. Ich möchte es eigentlich nicht mit einer Tabellenfunktion lösen.
Die Extraktion der Zahlen aus der Zeichenfolge soll per Makro erfolgen, damit ich sie anschließend in eine Tabelle übernehmen und dort blockweise in Zellen aufteilen kann (es handelt sich immer um 1er, bis 4er Blocks, durch Lehrzeichen getrennt).
Dummerweise stehen die Zahlen innerhalb von xml-Tags (wegen der Dreiecks-Klammern hier schwer darzustellen), einem Beginn-Tag und einem Ende-Tag etwa so:
(Zahlenfolge)123 123 234 345 456(/Zahlenfolge)
Habe es bereits mit der Mid-Funktion versucht, aber die Länge zer Zahlenfolge ist variabel. So habe ich zwar den Beginn Tag entfernen können, aber nicht den Ende-Tag.
Kann man die Left- und Right- Funktion kombinieren?
Heiko
Anzeige
AW: Text von Zahlen trennen
19.07.2005 14:17:00
Zahlen
Hallo
VBA hättest du aber schon anfangs erwähnen können....
hier mein Vorschlag:
Sub Splitten()
Dim SP%, TagA$, TagE$, LR%, I%, EZ%, TT$, x As Variant
EZ = 2 'erste Zeile
SP = 1 'Spalte
LR = ActiveSheet.Cells(Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
TagA$ = "<888>" ' Muster bitte ändern
TagE$ = "</999>" ' ""
For I = EZ To LR
TT = Application.Substitute(ActiveSheet.Cells(I, SP).Value, TagA, "") 'entfernt das AnfangTag
TT = Application.Substitute(TT, TagE, "") 'entfernt das EndeTag
Rows(I) = Split(TT, " ") 'Teilt nach Leerzeichen
Next I
ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 16).ClearContents ' löscht die entstandenen #NV raus
End Sub
Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Text von Zahlen trennen
19.07.2005 14:52:54
Zahlen
Hallo Heiko,
oder so (unabhängig von Länge und Inhalt der Tags):
Sub Teilstring()
Dim str As String
str = "<Tag>123 456 789</Tag>"
str = Right(str, Len(str) - InStr(1, str, ">", vbTextCompare))
str = Left(str, InStr(1, str, "<", vbTextCompare) - 1)
End Sub
Gruß Ingolf
AW: Text von Zahlen trennen
19.07.2005 15:36:44
Zahlen
Danke den Helfern!
Ich hab´s inzwischen so ähnlich gelöst wie IngGi, indem ich zuerst mit der Mid-Funktion den Anfangs-Tag entfernt habe. Anschließend habe ich die Länge der Zeichenkette ermittelt und mit der Left Funktion die ermittelte Anzahl der zeichen um die bekannte Anzahl der Zeichen des Ende-Tags reduziert. Als Ergebnis habe ich dann (uff!) meine Messwerte erhalten.
Mit der Split-Funktion und einer Schleife habe ich die Datenblöcke getrennt und untereinander in der Tabelle aufgelistet.
Vielen Dank für Eure Inspirationen!
Gruß, Heiko