|
|
Up |
|
|
  |
Author: Kai ApelKai Apel Date: May 13, 2008 06:33
Liebe NG,
Ich bekommen von einem externen Programm Strings in der Form: "Test
a1b1c3d2e2f3". So soll die amtliche Form aussehen. Zerlegen kann ich
mit Teil(Finden(str;"a");2). Damit erhalte ich a1. Jetzt kann es aber
passieren, dass der String "Test aa1b1c3d2e2f3" oder "Test
a2a1a11b1c3d2e2f3" lautet. Im ersten Fall wĂĽrde ich ein "aa"
zurĂĽckbekommen und im zweiten Fall erhalte ich nur "a2" und nicht
"a1". Gibt es eine einfache Funktion, die das Finden von Rechts aus
startet und prĂĽft, ob der zweite Wert eine Zahl ist?
Kai
|
| |
|
| | 22 Comments |
|
  |
Author: {Boris}{Boris} Date: May 13, 2008 07:10
Hi Kai,
On 13 Mai, 15:33, Kai Apel wrote:
> Ich bekommen von einem externen Programm Strings in der Form: "Test
> a1b1c3d2e2f3". So soll die amtliche Form aussehen. Zerlegen kann ich
> mit Teil(Finden(str;"a");2). Damit erhalte ich a1. Jetzt kann es aber
> passieren, dass der String  "Test aa1b1c3d2e2f3" oder  "Test
> a2a1a11b1c3d2e2f3" lautet. Im ersten Fall wĂĽrde ich ein "aa"
> zurĂĽckbekommen und im zweiten Fall erhalte ich nur "a2" und nicht
> "a1". Gibt es eine einfache Funktion, die das Finden von Rechts aus
> startet und prĂĽft, ob der zweite Wert eine Zahl ist?
Eine Stringzerlegung ist immer eine spezielle Sache - und ist daher
nicht allgemein zu beantworten. Da ich nicht glaube, dass Deine
angegebenen Strings so bei Dir vorkommen: Gib mal ein *echtes*
Beispiel - und zudem einen *eindeutigen* Anhaltspunkt, an dem man sich
bei der Zerlegung orientieren kann. Was soll also genau extrahiert
werden?
--
GrĂĽĂźe Boris
|
| |
|
| | no comments |
|
  |
Date: May 13, 2008 07:12
Am Tue, 13 May 2008 06:33:41 -0700 (PDT) schrieb Kai Apel:
> Ich bekommen von einem externen Programm Strings in der Form: "Test
> a1b1c3d2e2f3". So soll die amtliche Form aussehen. Zerlegen kann ich
> mit Teil(Finden(str;"a");2). Damit erhalte ich a1. Jetzt kann es aber
> passieren, dass der String "Test aa1b1c3d2e2f3" oder "Test
> a2a1a11b1c3d2e2f3" lautet. Im ersten Fall wĂĽrde ich ein "aa"
> zurĂĽckbekommen und im zweiten Fall erhalte ich nur "a2" und nicht
> "a1". Gibt es eine einfache Funktion, die das Finden von Rechts aus
> startet und prĂĽft, ob der zweite Wert eine Zahl ist?
Hallo Kai,
so ganz klar ist mir das nicht. Probier's mal mit
=TEIL(A1;FINDEN("a";A1;1);FINDEN("b";A1;1)-FINDEN("a";A1;1))
|
| Show full article (1.14Kb) |
| no comments |
|
  |
Author: Kai ApelKai Apel Date: May 13, 2008 07:26
der Teilstring der extrahiert werden soll lautet immer buchstabe
gefolgt von zahl, also "a1" oder "c2". Wie gesagt, wenn der String
korrekt "gemacht" worden ist, ist das auslesen ja kein Problem:
Test aa12a1a3b1. muss liefern: a3 und b1
Test ab1a2b12. muss liefern: a2 und b1
Test a12a2a3b2.muss liefern: a3 und b2
also suchen nach letztem "a", wenn Finden("a")+1 = Zahl ist.
Ziel des ganzen ist es Bewertungen aus diesem Sting zu extrahieren.
Der Idealfall läuft ja bereit:
=WENN(ISTFEHLER(FINDEN("a";$B5));"nicht
bewertet";RECHTS(TEIL($B5;FINDEN("a";$B5);2);1)*1)
Kai
|
| |
| no comments |
|
  |
Author: Wolfgang HabernollWolfgang Habernoll Date: May 13, 2008 08:02
Hallo Kai
>"Kai Apel" schrieb im Newsbeitrag
>news:618d18ea-0a47-458f-80cc-50f51513bf84@8g2000hse.googlegroups.com...
>der Teilstring der extrahiert werden soll lautet immer buchstabe
>gefolgt von zahl, also "a1" oder "c2". Wie gesagt, wenn der String
>korrekt "gemacht" worden ist, ist das auslesen ja kein Problem:
>Test aa12a1a3b1. muss liefern: a3 und b1
? nicht a1,a3,b1
>Test ab1a2b12. muss liefern: a2 und b1
>Test a12a2a3b2.muss liefern: a3 und b2
? nicht a2,a3,b2
>also suchen nach letztem "a", wenn Finden("a")+1 = Zahl ist.
>Ziel des ganzen ist es Bewertungen aus diesem Sting zu extrahieren.
>Der Idealfall läuft ja bereit:
>=WENN(ISTFEHLER(FINDEN("a";$B5));"nicht
>bewertet";RECHTS(TEIL($B5;FINDEN("a";$B5);2);1)*1)
wenn ich das richtig verstehe möchtest du also von rechts gesehen nur die letzen
*zwei* Buchstaben/Zahl Kombinationen? , kann das auch mitVBA sein ?
|
| Show full article (0.98Kb) |
| no comments |
|
  |
Author: Kai ApelKai Apel Date: May 13, 2008 08:39
genau! kann natĂĽrlich auch via VBA gehen
Ich habe bisher soetwas
Public Function Kr1(str As String) As String
Dim strK1 As String
If InStr(str, "a") > 0 Then
Kr6 = Mid(str, Application.Find("a", str), 2)
strK6 = Left(Kr6, 2)
Kr6 = Right(Kr6, 1)
Else
Kr6 = "keine Bewertung"
End If
End Function
Eigentlich mĂĽĂźte das ĂĽber eine Schleife laufen:
so nach dem schema: Suche nach letztem Buchstabe X, Gucke, ob
nachfolgendes Zeichen eine Zahl..
Ich möchte die Fälle a1a1a2bbbbb1 entsprechend als a2 und b1 auslesen.
Kai
|
| |
| no comments |
|
  |
Date: May 13, 2008 09:39
Am Tue, 13 May 2008 07:26:10 -0700 (PDT) schrieb Kai Apel:
Hallo Kai,
> der Teilstring der extrahiert werden soll lautet immer buchstabe
> gefolgt von zahl, also "a1" oder "c2". Wie gesagt, wenn der String
> korrekt "gemacht" worden ist, ist das auslesen ja kein Problem:
> Test aa12a1a3b1. muss liefern: a3 und b1
> Test ab1a2b12. muss liefern: a2 und b1
ist das richtig: "b1", obwohl von *2* Ziffern gefolgt?
> Test a12a2a3b2.muss liefern: a3 und b2
>
> also suchen nach letztem "a", wenn Finden("a")+1 = Zahl ist.
oder in anderen Worten: suche das letzte a, das nur von *einer* Ziffer
gefolgt wird?
Als Einstieg zunächst mal nur Suchen nach "a" (noch nicht b...), und
vereinfachend nur mit der ActiveCell (erst mal sehen, ob die Richtung
stimmt).
Test aa5b1c3d2e2f3 --> a5
test a2a7a11b1c3d2e2f3 --> a7
Soll es so sein?
|
| Show full article (1.59Kb) |
| no comments |
|
  |
Author: Claus BuschClaus Busch Date: May 13, 2008 10:00
Hallo Kai,
probiers mal so:
fĂĽr a:
=TEIL(A1;FINDEN("#";WECHSELN(A1;"a";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;"a";""))));2)
fĂĽr b:
=TEIL(A1;FINDEN("#";WECHSELN(A1;"b";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;"b";""))));2)
Mit freundlichen GrĂĽssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate
|
| |
| no comments |
|
  |
Author: Kai ApelKai Apel Date: May 13, 2008 10:36
naja, fast:
ja, das gucke ich mir mal genauer an!
Danke
Kai
|
| |
| no comments |
|
  |
|
|
  |
Date: May 13, 2008 13:21
Am Tue, 13 May 2008 19:00:22 +0200 schrieb Claus Busch:
> probiers mal so:
> fĂĽr a:
> =TEIL(A1;FINDEN("#";WECHSELN(A1;"a";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;"a";""))));2)
> fĂĽr b:
> =TEIL(A1;FINDEN("#";WECHSELN(A1;"b";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;"b";""))));2)
Hallo Claus,
mir ist u. a. noch nicht ganz klar, welche Kombinationen auftreten können.
Bei z. B. Test a1ab2 wird die Tabellenfunktionslösung etwas kompliziert.
--
Mit freundlichen GrĂĽssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
|
| |
| no comments |
|
|
|
|
|
|