von Lenu » Sa, 15.10.2005 18:27
Die gute Nachricht: es geht. Kleines Aber:
es geht nicht ohne Zwischenspalte. Jedenfalls nicht bei meinem Formel-Vorschlag. Nicht wegen der Formel-Logik, sondern weil die Formel länger wird, als OO bereit ist, zuzulassen.
Die Formel-Logik:
- Man braucht zunächst einen verschachtelten FINDEN-Befehl, um den zweiten und dritten Punkt zu finden:
Punkt 2: FINDEN(".";A1;FINDEN(".";A1)+1)
Punkt 3: FINDEN(".";A1;FINDEN(".";A1;FINDEN(".";A1)+1)+1) - Wenn die Suche nach dem dritten Punkt erfolglos bleibt, liefert OO einen Fehlerwert, den kann man in eine WENN-Abfrage einbauen:
WENN(ISTFEHLER(FINDEN.... - Wenn es keinen dritten Punkt gibt, befindet sich der zu bearbeitende Teil-String zwischen dem zweiten Punkt und dem Ende, andernfalls zwischen dem zweiten und dritten Punkt.
Der so ermittelte Teil-String steht nun in Spalte B. Jetzt wird daraus in Spalte C die Zahl herausgefiltert:
- Mit WERT() wird aus dem Teilstring eine Zahl
- Wenn der Teilstring Buchstaben enthält, ergibt WERT einen Fehler. Man muss also zunächst prüfen, ob die WERT-Funktion überhaupt eine Zahl liefern kann:
WENN(ISTZAHL(WERT(B1));WERT(B1))
- Wenn das Ergebnis keine Zahl ist, schneidet man mit TEIL einfach die letzte Stelle ab
Solche Mammut-Formeln sind sehr fehleranfällig und ein Horror für spätere Bearbeitungen.
Aber man kann die einzelnen Formelteile als Aliase speichern und erhält so wieder einen übersichtlichen Aufbau.
Eine Formel speichert man via: Einfügen/Namen/Festlegen. Die Namen sind frei wählbar, ausser, dass man keine OO-Funktionsnamen nehmen kann. Die Formel schreibt oder kopiert man dann in das Feld "zugeordnet zu".
Was man beachten muss: man kann keine Zellbezüge im gewohnten Stil verwenden, also sowas wie =A2 bzw. WENN(A2=....
Man muss eine Schreibweise finden, die absolut allgemeingültig ist.
Im vorliegenden Beispiel steht die Formel-Spalte rechts neben der Spalte mit dem Ausgangswert. Die Formel bezieht sich also auf "die Zelle links von mir". Auf den Inhalt der Zelle, die um 1 Spalte nach links zur Formel-Spalte verschoben ist, greift man so zu:
=INDIREKT(ADRESSE(ZEILE();SPALTE()-1))
Steht die Ausgangszelle weiter links, muss man halt mehr als 1 Spalte abziehen:
=INDIREKT(ADRESSE(ZEILE();SPALTE()-3))
Das Ganze gibts
hier zum Download. Bitte Link mit rechter Maustaste anklicken und "Ziel speichern unter"
Schöne Grüsse
Die gute Nachricht: es geht. Kleines Aber:
es geht nicht ohne Zwischenspalte. Jedenfalls nicht bei meinem Formel-Vorschlag. Nicht wegen der Formel-Logik, sondern weil die Formel länger wird, als OO bereit ist, zuzulassen.
Die Formel-Logik:[list][*]Man braucht zunächst einen verschachtelten FINDEN-Befehl, um den zweiten und dritten Punkt zu finden:
Punkt 2: FINDEN(".";A1;FINDEN(".";A1)+1)
Punkt 3: FINDEN(".";A1;FINDEN(".";A1;FINDEN(".";A1)+1)+1)[*]Wenn die Suche nach dem dritten Punkt erfolglos bleibt, liefert OO einen Fehlerwert, den kann man in eine WENN-Abfrage einbauen:
WENN(ISTFEHLER(FINDEN....[*]Wenn es keinen dritten Punkt gibt, befindet sich der zu bearbeitende Teil-String zwischen dem zweiten Punkt und dem Ende, andernfalls zwischen dem zweiten und dritten Punkt.[/list]Der so ermittelte Teil-String steht nun in Spalte B. Jetzt wird daraus in Spalte C die Zahl herausgefiltert:[list][*]Mit WERT() wird aus dem Teilstring eine Zahl[*]Wenn der Teilstring Buchstaben enthält, ergibt WERT einen Fehler. Man muss also zunächst prüfen, ob die WERT-Funktion überhaupt eine Zahl liefern kann:
WENN(ISTZAHL(WERT(B1));WERT(B1))
[*]Wenn das Ergebnis keine Zahl ist, schneidet man mit TEIL einfach die letzte Stelle ab[/list]
Solche Mammut-Formeln sind sehr fehleranfällig und ein Horror für spätere Bearbeitungen.
Aber man kann die einzelnen Formelteile als Aliase speichern und erhält so wieder einen übersichtlichen Aufbau.
Eine Formel speichert man via: Einfügen/Namen/Festlegen. Die Namen sind frei wählbar, ausser, dass man keine OO-Funktionsnamen nehmen kann. Die Formel schreibt oder kopiert man dann in das Feld "zugeordnet zu".
Was man beachten muss: man kann keine Zellbezüge im gewohnten Stil verwenden, also sowas wie =A2 bzw. WENN(A2=....
Man muss eine Schreibweise finden, die absolut allgemeingültig ist.
Im vorliegenden Beispiel steht die Formel-Spalte rechts neben der Spalte mit dem Ausgangswert. Die Formel bezieht sich also auf "die Zelle links von mir". Auf den Inhalt der Zelle, die um 1 Spalte nach links zur Formel-Spalte verschoben ist, greift man so zu:
=INDIREKT(ADRESSE(ZEILE();SPALTE()-1))
Steht die Ausgangszelle weiter links, muss man halt mehr als 1 Spalte abziehen:
=INDIREKT(ADRESSE(ZEILE();SPALTE()-3))
Das Ganze gibts [b][u][url=http://mypage.bluewin.ch/solkasim/filter.sxc]hier[/url][/u][/b] zum Download. Bitte Link mit rechter Maustaste anklicken und "Ziel speichern unter"
Schöne Grüsse