Discussion:
Zeichen finden, von Rechts
(zu alt für eine Antwort)
Hans Müller
2003-10-03 18:08:31 UTC
Permalink
Hallo zusammen
ich sollte ein Zeichen finden innerhalb eines Satzes, jedoch nicht von
Links her gesehen sondern von rechts.
Ein Beispiel: Die Zelle enthält die zeichenfolge: Test Test Test. So
bekomme ich mit finden Leerzeichen die Zahl 5 Zurück. Ich hätte aber
gerne das letzte Leerzeichen, also die Zahl 10.
Frage an Euch: Hat jemand eine Idee, wie ich das bewerkstelligen könnte?
Für alle Tipps bedanke ich mich schon jetzt und wünsche Euch ein schönes
Wochenende!
Hans
Melanie Breden
2003-10-03 18:23:28 UTC
Permalink
Hallo Hans,
Post by Hans Müller
ich sollte ein Zeichen finden innerhalb eines Satzes, jedoch nicht von
Links her gesehen sondern von rechts.
Ein Beispiel: Die Zelle enthält die zeichenfolge: Test Test Test. So
bekomme ich mit finden Leerzeichen die Zahl 5 Zurück. Ich hätte aber
gerne das letzte Leerzeichen, also die Zahl 10.
Frage an Euch: Hat jemand eine Idee, wie ich das bewerkstelligen könnte?
Für alle Tipps bedanke ich mich schon jetzt und wünsche Euch ein schönes
Wochenende!
du könntest eine benutzerdefinierte Funktion verwenden.
Speicher die Funktion in einem Standardmodul:

Function ZeichenRechts(strCheck As String, _
strMatch As String) As Integer
ZeichenRechts = InStrRev(strCheck, strMatch)
End Function

In einer Zelle dann folgende Formel um das ersten Leerzeichen von rechts zu ermitteln:
=ZeichenRechts(A1;" ")

Diese Formel lässt sich auch mit anderen Formel verschachteln.

--
Mit freundlichen Grüßen
Melanie Breden

_____________________
[Microsoft MVP für Excel]
Hans Müller
2003-10-03 18:59:07 UTC
Permalink
Hallo Melanie
Post by Melanie Breden
Function ZeichenRechts(strCheck As String, _
strMatch As String) As Integer
ZeichenRechts = InStrRev(strCheck, strMatch)
End Function
In einer Zelle dann folgende Formel um das ersten Leerzeichen von
rechts zu ermitteln: =ZeichenRechts(A1;" ")
Vielen Dank für die schnelle Hilfe! Ich bekomme jedoch eine Null als
Antwort. Da ich mich mit VBA einfach wenig auskenne; ich habe ein Modul
erstellt und Deine Funktion so reinkopiert. Wird der Unterstrich als
Leerzeichen interpretiert?
Verwendete Excel Version übrigens Excel 2000. Könntest Du das mal
verifizieren? Ist das allenfalls mit Modul nicht OK?
Vielen Dank für die Hilfe!
Gruss Hans
Melanie Breden
2003-10-03 19:41:00 UTC
Permalink
Hallo Hans,
Post by Hans Müller
Post by Melanie Breden
Function ZeichenRechts(strCheck As String, _
strMatch As String) As Integer
ZeichenRechts = InStrRev(strCheck, strMatch)
End Function
In einer Zelle dann folgende Formel um das ersten Leerzeichen von
rechts zu ermitteln: =ZeichenRechts(A1;" ")
Vielen Dank für die schnelle Hilfe! Ich bekomme jedoch eine Null als
Antwort. Da ich mich mit VBA einfach wenig auskenne; ich habe ein Modul
erstellt und Deine Funktion so reinkopiert. Wird der Unterstrich als
Leerzeichen interpretiert?
Verwendete Excel Version übrigens Excel 2000. Könntest Du das mal
verifizieren? Ist das allenfalls mit Modul nicht OK?
der Unterstrich steht für einen Zeilenumbruch im VBA-Code und sollte dort bleiben :-)
Die Funktion gehört unverändert in ein Modul, soweit ist alles ok.

In der Formel in einer Zelle gibst du im zweiten Parameter das Zeichen an, welches du ermitteln willst,
in deinem Fall eben einen Leerstring (" ")

Wenn in A1 deine Zeichenkette Test Test Test steht, dann liefert die Formel:
=ZeichenRechts(A1;" ") als Ergebnis 10.

Klappt es jetzt?

--
Mit freundlichen Grüßen
Melanie Breden

_____________________
[Microsoft MVP für Excel]
Hans Müller
2003-10-03 20:07:07 UTC
Permalink
Hallo Melanie
Post by Melanie Breden
Hallo Hans,
Post by Melanie Breden
Function ZeichenRechts(strCheck As String, _
strMatch As String) As Integer
ZeichenRechts = InStrRev(strCheck, strMatch)
End Function
In einer Zelle dann folgende Formel um das ersten Leerzeichen von
rechts zu ermitteln: =ZeichenRechts(A1;" ")
der Unterstrich steht für einen Zeilenumbruch im VBA-Code und sollte dort bleiben :-)
Die Funktion gehört unverändert in ein Modul, soweit ist alles ok.
In der Formel in einer Zelle gibst du im zweiten Parameter das
Zeichen an, welches du ermitteln willst, in deinem Fall eben einen
Leerstring (" ")
Wenn in A1 deine Zeichenkette Test Test Test steht, dann liefert die
Formel: =ZeichenRechts(A1;" ") als Ergebnis 10.
Klappt es jetzt?
--
Mit freundlichen Grüßen
Melanie Breden
_____________________
[Microsoft MVP für Excel]
Ja, es tut, es hätte gleich tun sollen, wäre nicht ein D*pp Namens Hans
auf der Leitung gestanden.
Vielen herzlichen Dank nochmals!

Hans
Melanie Breden
2003-10-03 20:25:28 UTC
Permalink
Hallo Hans,
Post by Hans Müller
Post by Melanie Breden
In der Formel in einer Zelle gibst du im zweiten Parameter das
Zeichen an, welches du ermitteln willst, in deinem Fall eben einen
Leerstring (" ")
Wenn in A1 deine Zeichenkette Test Test Test steht, dann liefert die
Formel: =ZeichenRechts(A1;" ") als Ergebnis 10.
Klappt es jetzt?
Ja, es tut, es hätte gleich tun sollen, wäre nicht ein D*pp Namens Hans
auf der Leitung gestanden.
Vielen herzlichen Dank nochmals!
bittesehr, ist gern geschehen, freut mich dass es funzt :-)

--
Mit freundlichen Grüßen
Melanie Breden

_____________________
[Microsoft MVP für Excel]
Klaus Beach
2003-10-06 07:49:15 UTC
Permalink
Post by Melanie Breden
ZeichenRechts = InStrRev(strCheck, strMatch)
wobei die InStrRev(strCheck, strMatch) Funktion für Excel 97 etwa so
aussehen könnte:

Function InStrRev(strCheck, strMatch) As Integer
Dim strChecklen, strMatchlen, bfound

bfound = False
strMatchlen = Len(strMatch)
strChecklen = Len(strCheck) - strMatchlen + 1

While (strChecklen > 0 And bfound = False)
If Mid(strCheck, strChecklen, strMatchlen) = strMatch Then
bfound = True
Else
strChecklen = strChecklen - 1
End If
Wend
If strChecklen < 0 Then strChecklen = 0
InStrRev = strChecklen
End Function

mfg
Klaus

Ullrich Schwarz
2003-10-03 19:08:58 UTC
Permalink
Hallo Hans, eine Formellösung:

=FINDEN("°";WECHSELN(A1;" ";"°";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))

MfG Ullrich
- Excel 2000 -
--
Post by Hans Müller
Hallo zusammen
ich sollte ein Zeichen finden innerhalb eines Satzes, jedoch nicht von
Links her gesehen sondern von rechts.
Ein Beispiel: Die Zelle enthält die zeichenfolge: Test Test Test. So
bekomme ich mit finden Leerzeichen die Zahl 5 Zurück. Ich hätte aber
gerne das letzte Leerzeichen, also die Zahl 10.
Frage an Euch: Hat jemand eine Idee, wie ich das bewerkstelligen könnte?
Für alle Tipps bedanke ich mich schon jetzt und wünsche Euch ein schönes
Wochenende!
Hans
Hans Müller
2003-10-03 19:28:51 UTC
Permalink
Es schrieben Ullrich und Eberhard
Post by Ullrich Schwarz
=FINDEN("°";WECHSELN(A1;" ";"°";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))
MfG Ullrich
- Excel 2000 -
Euch beiden herzlichen Dank, das werde ich mir morgen reinziehen, ich
verstehe hier die Formel nicht ganz. Er soll was finden was nicht
vorkommt, die Formel WECHSELN muss ich mir anschauen, die scheint mir
offensichtlich zuständig zu sein um das Pferd von hinten aufzu zäumen.

Vielen Dank!
Schönes Wochenende wünscht Hans
Eberhard Funke
2003-10-03 20:06:31 UTC
Permalink
Hallo Hans.

Melanie's Makro funktioniert bei mir.
Post by Ullrich Schwarz
=FINDEN("°";WECHSELN(A1;" ";"°";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))
ich verstehe hier die Formel nicht ganz. Er soll was finden was nicht
vorkommt, [....]
WECHSELN(A1;" ";"") gibt den Text bereinigt um die Leerzeichen wieder.
LÄNGE(WECHSELN(A1;" ";"")) gibt die Zeichenzahl dieses gekürzten
Textes zurück.
LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";"")) ergibt die Anzahl der in A1
enthaltenen Leerzeichen, in Deinem Beispiel = 2.
WECHSELN(A1;" ";"°";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))) fügt in A1
anstelle des zweiten Leerzeichens bei Ullrich das Zeichen ° bzw bei
mir xxx ein.
Finden(....) gibt die Position des eingefügten Dummy-Textes (° bzw.
xxx) zurück.

Du kannst das übrigens selbst verfolgen, wenn Du oben in der
Eingabezeile (?) die Formelteile markierst und dann die F9 Taste
drückst. Dann wird der Wert des Formelteiles angezeigt. Nicht
vergessen: anschließend die Esc Taste drücken, sonst wird der
Formelteil durch den Wert ersetzt.


--
Als XL-Lehrling grüsst
Eberhard mit XL 2000
Hans Müller
2003-10-03 20:52:04 UTC
Permalink
Hallo Eberhard
Post by Eberhard Funke
Hallo Hans.
Melanie's Makro funktioniert bei mir.
Post by Ullrich Schwarz
=FINDEN("°";WECHSELN(A1;" ";"°";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))
ich verstehe hier die Formel nicht ganz. Er soll was finden was nicht
vorkommt, [....]
WECHSELN(A1;" ";"") gibt den Text bereinigt um die Leerzeichen wieder.
LÄNGE(WECHSELN(A1;" ";"")) gibt die Zeichenzahl dieses gekürzten
Textes zurück.
LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";"")) ergibt die Anzahl der in A1
enthaltenen Leerzeichen, in Deinem Beispiel = 2.
WECHSELN(A1;" ";"°";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))) fügt in A1
anstelle des zweiten Leerzeichens bei Ullrich das Zeichen ° bzw bei
mir xxx ein.
Finden(....) gibt die Position des eingefügten Dummy-Textes (° bzw.
xxx) zurück.
Du kannst das übrigens selbst verfolgen, wenn Du oben in der
Eingabezeile (?) die Formelteile markierst und dann die F9 Taste
drückst. Dann wird der Wert des Formelteiles angezeigt. Nicht
vergessen: anschließend die Esc Taste drücken, sonst wird der
Formelteil durch den Wert ersetzt.
Jetzt schnalle ich es, lange gehts aber es geht. Ich habe nicht
mitbekommen dass der Text um die Leerzeichen bereinigt wird, ergo ist
nachher klar, wieviele Leerzeichen sich in diesem Text befinden müssen.
Das suchte ich.

Allen, die mir hier geholfen haben, wünsche ich ein wunderschönes
Wochenende. Und den Mitlesern, welche sich allenfalls auch Gedanken
machten, natürlich auch!

Hans
Eberhard Funke
2003-10-03 19:12:27 UTC
Permalink
Post by Hans Müller
Hallo zusammen
ich sollte ein Zeichen finden innerhalb eines Satzes, jedoch nicht von
Links her gesehen sondern von rechts.
Ein Beispiel: Die Zelle enthält die zeichenfolge: Test Test Test. So
bekomme ich mit finden Leerzeichen die Zahl 5 Zurück. Ich hätte aber
gerne das letzte Leerzeichen, also die Zahl 10.
Frage an Euch: Hat jemand eine Idee, wie ich das bewerkstelligen könnte?
Für alle Tipps bedanke ich mich schon jetzt und wünsche Euch ein schönes
Wochenende!
Hans
Hallo Hans,

Ohne VBA ist's etwas kompliziert, aber versuch mal
=FINDEN("xxx";WECHSELN(A1;" ";"xxx";LÄNGE(A1)- <== Zeilenumbruch!
LÄNGE(WECHSELN(A1;" ";"")));1)
Der Satz steht in A1 und darf nicht die Zeichenfolge "xxx" (ohne die
"") enthalten.
--
Als XL-Lehrling grüsst
Eberhard mit XL 2000
Lesen Sie weiter auf narkive:
Loading...