Clever-Excel-Forum

Normale Version: Suchen mit Wildcard
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich habe ein Problem und suche nach einer Lösung.

Ich möchte ein Feld nach bestimmten Begriffen durchsuchen und je nach Ergebnis in einer Zelle ein Wort ausgeben.


In Zelle AE7 können folgende Werte in einem Dropdown-Feld stehen. 

01.01.2018
KW 22/2018
Mai 2018
Q 1/2018

Ich möchte nun in einer anderen Zelle jeweils ein Wort ausgeben, wenn er den Wert gefunden hat.

01.01.2018 -> Tag
KW 22/2018 -> Woche
Mai 2018 -> Monat
Q 1/2018 -> Quartal

Ich hatte es wie folgt versucht, aber das klappt nicht so wirklich. 

Code:
=WENN(ISTZAHL((SUCHEN("KW ";AE7)));"WOCHENRÜCKBLICK";WENN(SUCHEN("Q ";AE7);"QUARTALSRÜCKSCHAU";WENN(SUCHEN(" 2018";AE7);"MONATSRÜCKSCHAU";"TAGESRÜCKSCHAU")))

Hat jemand eine Idee?

Gruß
brooker
Hi,

Zitat:Ich hatte es wie folgt versucht, aber das klappt nicht so wirklich. 

Was bedeutet das?

Man sollte dazu die Tabelle sehen.
hallo brooker,

unter der Voraussetzung, dass AE7 textformatiert sind (wie alle Eingabewerte") z.B. mit folgender Formel:

Code:
=WAHL(1+(ISTZAHL(--AE7)+ISTFEHL(--LINKS(AE7;1))*2)*(AE7<>"")+ISTZAHL(SUCHEN("Q";AE7))*2;"";"TAGESRÜCKSCHAU";"WOCHENRÜCKBLICK";"MONATSRÜCKSCHAU";"QUARTALSRÜCKSCHAU")

Die bei leerer AE7 auch ein ="" ausgibt.
(08.06.2018, 09:45)neopa schrieb: [ -> ]hallo brooker,

unter der Voraussetzung, dass AE7 textformatiert sind (wie alle Eingabewerte") z.B. mit folgender Formel:

Code:
=WAHL(1+(ISTZAHL(--AE7)+ISTFEHL(--LINKS(AE7;1))*2)*(AE7<>"")+ISTZAHL(SUCHEN("Q";AE7))*2;"";"TAGESRÜCKSCHAU";"WOCHENRÜCKBLICK";"MONATSRÜCKSCHAU";"QUARTALSRÜCKSCHAU")

Die bei leerer AE7 auch ein ="" ausgibt.

Das funktioniert so! Klasse! Verstehen tue ich die Formel aber nicht.  Dodgy Könntest du mir die Schritt für Schritt erklären?
Hi,

oder auch so:


Code:
=WAHL(1+(CODE(A5&" ")=75)*1+(CODE(A5&" ")=81)*2+(CODE(A5&" ")>63)+(CODE(A5&" ")>47);"";"tagesrückschau";"Monatsrückschau";"Wochenrückblick";"Quartalsrückschau")
=WENNFEHLER(WAHL(1+(CODE(A5)=75)*1+(CODE(A5)=81)*2+(CODE(A5)>63);"tagesrückschau";"Monatsrückschau";"Wochenrückblick";"Quartalsrückschau");"")
Hallo brooker,

per PN an mich hast Du nochmal Deine Bitte erneuert, Dir meine Formel zu erklären. Da eine solche immer wesentlich mehr Zeit in Anspruch nimmt, als eine Formel aufzustellen (wenn man es kann), versuche ich dies meist zu vermeiden.

Vorbemerkungen:

Ich setze voraus, dass Dir die MSO-Hilfe zur Funktion WAHL() zu Gemüte geführt hast bzw. es noch tust.

Excel unterscheidet bei Zahlenangaben, ob diese als solche auch formatiert sind (ist in Excel normalerweise der Standard) oder im Textformat vorliegen. Für Excel ist eine angezeigte Zahl nicht zwangsläufig auch ein echter Zahlenwert. Datumswerte sind hier normalerweise spezifisch formatierte Zahlenwerte, aber eben stets Zahlenwerte. Wenn Zahlenwerte textformatiert sind, kann man diese durch eine mathematische Operation wieder in eine für Excel echte Zahl wandeln.

Dafür gibt es verschiedene Möglichkeiten. Meist wird dazu eine mathematische Operation  wie z.B. Addition oder Multiplikation verwendet. Die doppelten Minuszeichen in meiner Formel stehen für eine sogenannte doppelte Negation. Dies ist auch eine mathematische Operation. So ist z.B. --99 gleichzusetzen mit -(-99). Anstelle einer doppelten Negation kann man mit gleichem Ergebnis auch mit 1 multiplizieren   oder eine 0 addieren oder ...  Ich hatte eben -- genutzt.

Nachfolgend eine Erklärung für den Beispielfall, dass in AE7 KW 22/2018 steht.

Da "KW 22/2018" ein Text ist, ergibt die doppelte Negation --AE7 intern einen Fehlerwert und ISTZAHL(--AE7) wertet diesen dann wiederum intern als Ergebniswert: FALSCH aus.

Der zweite Formelteil: ISTFEHL(--LINKS(AE7;1)) dagegen ergibt WAHR. Warum denn das? Wweil eine mathematische Operation des 1. Zeichen des Textes("K") in AE7 auch intern einen Fehlerwert erzeugen muss. Und mit ISTFEHLER() wird ein solcher Fehlerwert dann eben als WAHR erkannt.

Damit ergibt sich der Formelteil: 1+(ISTZAHL(--AE7)+ISTFEHL(--LINKS(AE7;1))*2) zu 1+ FALSCH+ WAHR*2
Die beiden Booleschen Werte werden durch die Addition in Excel automatisch als 0 bzw. 1 gewertet. Somit erhält man als Zwischenergebnis bis hierher: 1+0+1*2=3. Dieses wird nun in der Formel ja mit (AE7<>"") multipliziert. Da AE7  nicht leer ist, ergibt sich für diese Bedingungsvergleich ein WAHR-Ergebnis. Somit wird die 3 nunmehr mit WAHR also 1 multipliziert.

Bleibt der Formelteil: ISTZAHL(SUCHEN("Q";AE7))*2. Da in "KW 22/2018"  kein "Q" zu erkennen ist, kann SUCHEN() es auch nicht finden und übergibt somit intern ISTZAHL() einen Fehlerwert. Diese Funktion findet keine Zahl vor und gibt als sein Teilergebniswert ein FALSCH weiter. Durch die Multiplikation mit 2 wird es ein 0*2 also 0.

Somit ergibt sich das gesamte 1. Argument von WAHL() zu: 1+0+1*2+0*2. Also bleibt es bei der Summe 3 und  WAHL() muss deshalb den 3. Wert aus der Wertematrix der Formel aussuchen. Dies  also aus :
""; "TAGESRÜCKSCHAU";"WOCHENRÜCKBLICK";"MONATSRÜCKSCHAU";"QUARTALSRÜCKSCHAU" und den entsprechenden als Ergebniswert ausgeben.

Achtung, auch "" wird von Excel stets als ein Wert betrachtet. Dies auch wenn sein Ergebniswert ="" in einer Zelle nichts anzeigt (in der Eingabezeile steht aber =""). Denn keine offensichtliche Wertanzeige in Excel bedeutet für Excel nicht zwangsläufig, dass die Zelle als leer zu betrachten wäre. 

Warum habe ich aber das "" überhaupt in die Wertematrix aufgenommen? Nun, wenn in AE7 nichts steht, soll ja als Ergebnis auch wenigstens nichts angezeigt werden und dafür braucht man den Wert "". Aus diesem Grund wiederum steht im Formelteil des 1. Arguments der WAHL() -Formel auch explizit eine 1. Dies weil im Fall einer leeren AE7-Zelle, alle anderen Formelteile durch FALSCH-Teilergebnisse einen Nullsummenwert dazu addieren und somit WAHL()  den ersten Wert aus der Wertematrix "" als Ergebniswert ausgeben kann.

Ich meine bzw. hoffe nun hast Du eine Basisgrundlage, um Dir die Formel auch für die anderen vorgesehenen  Eingabewerte selbst zu erklären.

Noch zwei Hinweise. Gib mal Mai 18 in eine noch frei, unbenutze und unformatierte Zelle ein. Was steht in der Zelle? Was aber in der Eingabezeile, wenn Du Dir den Wert dort nochmal ansiehst? Genau Excel wandelt automatisch ein für ihn zweifelsfrei erkennbaren Datumseingabewert in einen kompletten Datumswert um.

In Deinem Fall sollte jedoch AE7 textformatiert sei. Dann steht auch in der Eingabezeile Mai 18 als Text und nicht als Excel-Datumswert. Es war für die Formel ganz wichtig, dass ich also von einem einheitlichen Eingabeformat (Text)  ausgehen konnte.

Mehr zu Datumswerten in Excel sieh u.a. auch mal hier: https://www.online-excel.de/excel/verwl.php und ff.

Uff, ist doch länger geworden als gedacht und geplant.
Mein Dank galt Deiner ausführlichen Erklärung.
Mal schauen, ob sie auch anerkannt wird …

Gruß Ralf
Hallo,

du hast ja gut angefangen , warum aber nicht konsequent zu Ende gebracht

Istzahl vor jede Suche  und schon bei den ersten Klammern war eine zuviel 


=WENN(ISTZAHL(SUCHEN("KW ";AE7));"WOCHENRÜCKBLICK";WENN(ISTZAHL(SUCHEN("Q ";AE7));"QUARTALSRÜCKSCHAU";WENN(ISTZAHL(SUCHEN(" 2018";AE7));"MONATSRÜCKSCHAU";"TAGESRÜCKSCHAU")))
(20.06.2018, 17:13)neopa schrieb: [ -> ]Hallo brooker,

per PN an mich hast Du nochmal Deine Bitte erneuert, Dir meine Formel zu erklären. Da eine solche immer wesentlich mehr Zeit in Anspruch nimmt, als eine Formel aufzustellen (wenn man es kann), versuche ich dies meist zu vermeiden.

Vorbemerkungen:

Ich setze voraus, dass Dir die MSO-Hilfe zur Funktion WAHL() zu Gemüte geführt hast bzw. es noch tust.

Excel unterscheidet bei Zahlenangaben, ob diese als solche auch formatiert sind (ist in Excel normalerweise der Standard) oder im Textformat vorliegen. Für Excel ist eine angezeigte Zahl nicht zwangsläufig auch ein echter Zahlenwert. Datumswerte sind hier normalerweise spezifisch formatierte Zahlenwerte, aber eben stets Zahlenwerte. Wenn Zahlenwerte textformatiert sind, kann man diese durch eine mathematische Operation wieder in eine für Excel echte Zahl wandeln.

[...]
Uff, ist doch länger geworden als gedacht und geplant.

Hi,

ganz großen Dank! Da muss man sich echt reinfuchsen, aber es ist für mich mehr als nur verständlich gewesen! Klasse!!!

DANKE, DANKE, DANKE!!!! Heart
(20.06.2018, 17:54)Dieter63 schrieb: [ -> ]Hallo,

...
Istzahl vor jede Suche  und schon bei den ersten Klammern war eine zuviel 
...

Hallo, richtig. Aber wenn überhaupt, reicht einmal SUCHEN()...

Hier mal noch zwei Variante..:

PHP-Code:
=WAHL(1+(ISTZAHL(C1)+SUMMENPRODUKT(--ISTZAHL(SUCHEN({"K"."Q"};C1));{2.3}));"MONATSRÜCKSCHAU";"TAGESRÜCKSCHAU";"WOCHENRÜCKBLICK";"QUARTALSRÜCKSCHAU"

oder..:

PHP-Code:
=INDEX({"MONATSRÜCKSCHAU";"TAGESRÜCKSCHAU";"WOCHENRÜCKBLICK";"QUARTALSRÜCKSCHAU"};1+(ISTZAHL(C1)+SUMMENPRODUKT(--ISTZAHL(SUCHEN({"K"."Q"};C1));{2.3}));) 
Seiten: 1 2