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.