Frage stellen
0

WENN ODER und FINDEN als Funktion verknüpfen

gefragt 2017-03-06 16:52:43 +0200

inJesus Gravatar-Bild

updated 2017-05-06 16:09:18 +0200

Hallo

Ich möchte, dass in der Zelle der Formel "DLR" angezeigt wird, wenn im Feld Z1 die Zeichenfolge "dlr", "DLR" oder "Dlr" vorkommt.

Leider klappen meine 2 besten Versuche noch nicht.
=WENN(ODER(FINDEN("dlr";$Z1));(FINDEN("DLR";$Z1));(FINDEN("Dlr";$Z1));"DLR")
=WENN(FINDEN(ODER("dlr";"Dlr";"DLR");$Z1);"DLR";)
(Formeln in "pre - code" gesetzt. Lupp)

Würde mich über eine Lösung freuen.

Herzlich, Klaus

edit retag flag offensive close merge delete

Comments

Und was, wenn ich 2 oder mehr Zellen auf "dlr" durchsuchen möchte? Ist irgendwo dlr drin, egal welcher Gross-klein-Schreibung, soll "DLR" ausgegeben werden.

inJesus Gravatar-BildinJesus ( 2017-03-18 16:59:10 +0200 )edit

So ehrenhaft die Absicht gewiss ist: Es gibt Handlungsräume, in denen Werbung für weltanschauliche oder relgiöse Positionen ebenso unangebracht ist wie Produktwerbung. Falls du das weiter diskutieren möchtest, gib bitte eine private E-Mail-Addresse an. .

Lupp Gravatar-BildLupp ( 2017-05-06 13:28:03 +0200 )edit

Bezüglich des "Update": Siehe Ergänzung zu meiner Antwort.

Lupp Gravatar-BildLupp ( 2017-05-06 13:29:22 +0200 )edit

Ich hab es aus dem Post rausgenommen.

inJesus Gravatar-BildinJesus ( 2017-05-06 16:09:51 +0200 )edit
1

geantwortet 2017-03-06 18:17:17 +0200

Lupp Gravatar-Bild

updated 2017-05-06 13:37:05 +0200

(Bitte nicht pauschal "funktioniert nicht", sondern konkret was tatsächlich passiert angeben!)

FINDEN liefert die Position im Text zurück, an der das gefundene Stück beginnt - wenn es gefunden wird. Falls der Suchtext nicht gefunden wurde, wird ein Fehlerwert zurückgegeben. Der wird dann durchgereicht bis zum Endergebnis der Formel. (Funktionen, die ausdrücklich nach einem Fehler fragen, können ihn "verschwinden" lassen. Auch ISNUMBER() und ISTEXT() sagen einfach ein fehlerfreies Nein wenn ein Fehler vorliegt.)

Zu Formel 1:
Weil mindesetns zwei der Suchtexte nicht gefunden werden, entsteht immer ein Fehler.
Würde der ODER-Teil der Formel doch einmal FALSCH sagen würde die Formal auch nicht wissen, was sie ausgeben soll: Die Alternative fehlt. Weil "gar nichts" nicht gilt, gibt WENN in seienr Verzweiflung dann FALSCH zurück.

Zu Formel2:
ODER kann man nur auf Listen von logischen Werten / Ausdrücken anwenden. Texte kann man verketten, aber nicht verodern. Alternative fehlt wie beim ersten Fehler.

Gemeinsam: Drei Schreibungen zu listen ist umständlich. Wenn nicht z.B. "DLr" auch auftreten kann, und dann anders behandelt werden muss, kannst du alle Fälle zusammenfassen, indem du ganz auf Großscheibung umstellst, oder statt FIND() SEARCH() verwendest. Diese Funktion lässt nämlich den Unterschied zwischen Groß- und Kleinschrift unbeachtet.

Eine Formel, die Arbeiten sollte, ist dann:
=IF(ISNUMBER(SEARCH("dlr";$Z1));"DLR";"")
=IFERROR(SEARCH("dlr";$Z1))>0;"DLR";"");"")
geht auch - und so manche andere Variante.

Hinweise:
1. Ich schalte nicht gerne dauern zwischen verschiedenen Sprachen für die Funktionsnamen um. Du findest sicher leicht was Passendes. "International" könnte da jeder erwägen, der schon mal ein englisches Wort gesehen hat. Good luck!
2. Die hier diskutierten Formeln (auch meine) finden das kritische Textstück auch in "Powidlrezept". Wenn du das nicht zulassen willst, musst du in den Optionen "Reguläre Ausdrücke in Funktionen" zulassen und mit SEARCH statt nach "dlr" z.B. nach "\bdlr\b" suchen. "\b" bedeutet in regulären Ausdrücken eine Wortgrenze ohne dass ein tatsächliches Zeichen erfasst wird.

Ergänzung bezüglich des "Update" zur Originalfrage vom 2017-05-06 durch Bearbeitung:
1) Die zweite Variante ist sinnlos. Zur ersten:
FINDEN("dlr";$Z1) gibt einen Fehlerwert zurück wenn dlr nicht gefunden wurde. Das pflanzt sich durch den ganzen Ausdruck fort. FINDEN versucht, eine Position zurückzugeben. Wenn es um die Entscheidung geht ob der Suchstring gefunden wure, braucht man IF(ISNUMBER()) oder IFERROR(Find(...) ;0) oder etwas ähnliches.
2) Wenn GroßKlein ignoriert werden soll, verwendet man SEARCH statt FIND. Oder...
3) Alle hier angesprochenen Varianten finden dlr auch in "traditionelles Unterammergauer Madlrennen". Vor allem RegEx bietet verschiedene Möglickeiten, das zu ändern.

edit flag offensive delete link mehr

Comments

Das ist natürlich die ausführliche Antwort. Ich war nur schreibfaul. Deshalb die Kurzversion. Noch ein Tip: Verschachtelte Formeln zerlegen. In einzelne Zellen und darauf beziehen. Damit sieht man in welchem Teil der Fehler ist. In meinem aktuellen Projekt habe ich bis zu 6 ineinander verschachtelte Formeln. Wenn ich die nicht zerlege finde ich den Fehler nie. Viel Spaß noch.

Sputnik Gravatar-BildSputnik ( 2017-03-07 14:43:43 +0200 )edit

@Sputnik: Guter Tip fürs "Debuggen" von Spreadsheets. Und oft wird es dann zweckmäsig sein, die Teile der zerlegten Labyrinthformel in Helferspalten stehen zu lassen.

Lupp Gravatar-BildLupp ( 2017-03-07 15:54:09 +0200 )edit

Funktionieren die Englisch-sprachigen Formeln auch im deutschen Libre Office? Bei mir klappte deine erste Formel nicht.

inJesus Gravatar-BildinJesus ( 2017-03-18 16:58:08 +0200 )edit

Die englischen Funktionsnamen liegen immer in der gespeicherten Datei vor. Sie werden auch unter jedem Gebietsschema unterstützt, wenn man das unter 'Optionen' > 'LibO Calc' > 'Formeln' einstellt.
(Bei rund 100 UI-Sprachen und rund 200 Lokalisierungen ("Gebietsschemata") ist m.E. lebendige Unterstützung nur möglich wenn ein wenig internationaliesiert wird.

Lupp Gravatar-BildLupp ( 2017-03-18 18:12:44 +0200 )edit

Danke für alle Tipps und Antworten. Sehr hilfreich.

inJesus Gravatar-BildinJesus ( 2017-05-05 17:39:53 +0200 )edit

Kann auch ein Bereich durchsucht werden?

inJesus Gravatar-BildinJesus ( 2017-05-05 19:17:27 +0200 )edit

"Kann auch ein Bereich durchsucht werden?"
Das ist nicht so einfach zu sagen weil die Frage uneindeutig ist.

a) Kann ich auch ... ausgeben wenn wenigstens eine Zelle im Bereich ....?
b) Kann ich auch ... wenn alle Zellen im Bereich ... ?
c) Kann ich durch eine Formel Ergebisse für alle Zellen eines Bereichs erzeugen?
d) ...?
Die Antwort ist in den drei Beispielfällen zwar immer "ja", aber die Details sind ganz verschieden.
In weiteren Fällen ist auch "nein" möglich.

Lupp Gravatar-BildLupp ( 2017-05-05 20:09:04 +0200 )edit
2

geantwortet 2017-03-06 17:33:20 +0200

Sputnik Gravatar-Bild
=WENN(FINDEN("DLR";GROSS($Z1));"DLR")
edit flag offensive delete link mehr

Comments

@Sputnik: Das ist natürlich die klare, kurze Antwort. (Auch wenn sie das Problemchen mit dem "Powidlrezept" unbeachtet lässt.)
Ich wollte nur ein paar zusätzlich Information für einen neuen "Kunden" liefern, nicht deine Antwort bekriteln.

Lupp Gravatar-BildLupp ( 2017-03-06 18:22:47 +0200 )edit

Funktioniert bei mir. Merci. Elegante Lösung.

Und was, wenn ich 2 oder mehr Zellen auf "dlr" durchsuchen möchte? Ist irgendwo dlr drin, egal welcher Gross-klein-Schreibung, soll "DLR" ausgegeben werden.

inJesus Gravatar-BildinJesus ( 2017-03-18 16:54:42 +0200 )edit
Registrieren oder einloggen, um zu antworten

Antwortwerkzeuge

1 follower

Stats

Asked: 2017-03-06 16:52:43 +0200

Seen: 114 times

Last updated: May 06