home *** CD-ROM | disk | FTP | other *** search
/ Amiga Times / AmigaTimes.iso / demos / programme / TurboCalc5d / Extras / Klug / T&T / T&T_WENN.txt < prev    next >
Encoding:
Text File  |  1998-10-06  |  7.5 KB  |  210 lines

  1.  
  2.                        T&T_WENN-Abfrage
  3.  
  4. (Dazu eine gleichnamige Tabelle, welche Sie z.B. nach TurboCalc:Tabellen
  5. kopieren sollten).
  6.  
  7. SYNTAX der Funktion WENN (IF):
  8.  
  9. WENN(Bedingung;Wert1;Wert2)
  10.  
  11.  Das Erstellen einer einfachen IF-Abfrage dürfte eigentlich keine
  12.  Schwierigkeiten bereiten.
  13.  
  14.  Das ändert sich allerdings,
  15.  
  16.   wenn eine Vielzahl von Verschachtelungen den Durchblick trüben,
  17.  
  18. WENN(Bedingung;Wert1;WENN(Bedingung;Wert2;WENN(Bedingung;Wert3;Wert4)))
  19.  
  20.   oder in den Verschachtelungen noch andere TurboCalc Funktionen als
  21.   Parameter verwendet werden müssen.
  22.  
  23. WENN(Bedingung;Funktion1;WENN(Funktion2;Funktion3;Funktion4))
  24.  
  25.  
  26.  Dann gibt es ein paar ganz einfachen Tricks, um sich nicht rettungslos
  27.  die Gehirnwindungen zu verknoten:
  28.  
  29.  Trick 1.
  30.     Bauen Sie die Formel modulweise auf, Schritt für Schritt und
  31.     überprüfen Sie diese jeweils, nach dem Hinzufügen eines neuen
  32.     Moduls, mit WECHSELNDEN Operatoren und/oder Bedingungen.
  33.  
  34.  Der Wechsel der Operatoren/Bedingungen ist deshalb wichtig, weil dann
  35.  nicht nur der "WAHR-Wert" seine Funktionsfähigkeit unter Beweis stellen
  36.  muß, sondern auch der "FALSCH-Wert", denn NUR der FALSCH-Wert bringt ja
  37.  die nächste "Schachtel" ins Spiel. Bedenken Sie dabei aber auch, daß
  38.  der FALSCH-Wert nicht unbedingt der ZWEITE Wert sein muß, denn wenn Sie
  39.  mittels NICHT (NOT) eine Umkehrung vorgenommen haben, ist Wert1 der
  40.  "FALSCH-Wert", gel!
  41.  
  42. WENN(NOT(Bedingung);Wert1;WENN(Bedingung;Wert2;Wert3))
  43.  
  44.  Eine Formel, welche nur soweit korrekt ist, daß der WAHR-Wert in Aktion
  45.  tritt, aber im - oft erheblich langen - Rest völlig vermurkst ist, kann
  46.  durchaus solange gut funktionieren, bis die WAHR-Aussage nicht mehr
  47.  zutrifft.
  48.  
  49.  Nur dann, wenn der Syntax nicht stimmt, wird eine Formel SOFORT eine
  50.  der Fehlermeldungen als Ergebnis liefern.
  51.  
  52.  Haben Sie also eine Formel produziert, so geben Sie sich beim Test
  53.  nicht mit einem scheinbar korrekten Ergebnis zufrieden, prüfen Sie
  54.  auch in "die andere Richtung".
  55.  
  56.    Beispiel 1 (siehe beiliegende Tabelle "T&T_WENN"):
  57.  
  58.    =IF(B9=B7;A2;ABS(B5:B11))
  59.  
  60.    Wenn hier B9 gleich B7 ist, wird diese Zelle den Wert der Zelle A2
  61.    annehmen. Bei der Überprüfung werden Sie sagen: "Prima, funktioniert
  62.    ja auf Anhieb".
  63.  
  64.    Das geht aber nur solange gut, als diese Bedingung WAHR ist. Wird
  65.    jedoch eines schönen Tages eine der Zellen (B9 oder B7) ihren Wert
  66.    ändern, so wird der FALSCH-Wert ("ABS(B5:B11)") garantiert seinem
  67.    Namen Ehre machen und ein falsches Ergebnis liefern, weil nämlich die
  68.    Funktion "ABS" aus einem Bereich nur den Inhalt der ERSTEN Zelle
  69.    (hier also B5) als positiven Retourwert liefert (steht zwar nicht im
  70.    Manual, stimmt aber dennoch!).
  71.  
  72.    Hätten Sie aber bei Erstellung der Formel, nach der Überprüfung des
  73.    Ergebnisses mit "=", den Operator gewechselt und stattdessen "<>"
  74.    und/oder "<" und/oder ">" verwendet...
  75.         (NICHT >= oder <=, das brächte nämlich dasselbe Ergebnis!)
  76.    ...dann währen Sie darauf gekommen, daß die Formel nur in EINEM
  77.    Falle korrekt arbeitet.
  78.  
  79.    Sie hätten die Formel nämlich so eingeben müssen:
  80.  
  81.          =IF(B9=B7;A2;ABS(SUM(B5:B11)))
  82.  
  83.  
  84.  Unsere obige Formel liefert also nun unter beiden Bedingungen
  85.  korrekte Ergebnisse. Jetzt bauen wir ein weiteres "Modul" ein:
  86.  
  87.    Beispiel 2 (siehe beiliegende Tabelle "T&T_Funktionen002"):
  88.  
  89.    Wir wollen, daß, im Falle der FALSCH-Wert käme zum Zuge, nicht
  90.    einfach der Absolutwert der Summe aus B5:B11 gezeigt wird,
  91.       sondern,
  92.    wenn dieser größer oder gleich "30" wäre, die Zelle den Wert "25"
  93.    annehmen sollte, andernfalls aber den Wert "10".
  94.  
  95.    Ob die neue Formel besonders sinnvoll ist, steht auf einem anderen
  96.    Blatt und ist hier nicht von Bedeutung!
  97.  
  98.     Der "Schwanz" unserer neuen Formel muß also so aussehen:
  99.  
  100.            >=30;25;10
  101.  
  102.     Den WAHR-Wert des ersten "Moduls" wollen wir zum Testen gleich
  103.     unterdrücken, weil wir ja jetzt wissen, daß er korrekt arbeitet.
  104.     Also ersetzen wir - bis zur endgültigen Fertigstellung - das "="
  105.     durch ein "<>" und bringen damit sofort den FALSCH-Wert ins Spiel.
  106.  
  107.     So lautet der "Kopf" der neuen Formel also
  108.  
  109.            =IF(B9<>B7;A2;                            )
  110.  
  111.     Den FALSCH-Wert der alten Formel "ABS(SUM(B5:B11))" machen wir nun
  112.     zur Bedingung der neuen IF-Abfrage, indem wir einfach ein "IF("
  113.     davor stellen und die zugehörige End-Klammer hinten anhängen und
  114.     erhalten so die neue Bedingung
  115.  
  116.                     IF(ABS(SUM(B5:B11)              )
  117.  
  118.     die wir als Teil der Vergleichs-Aussage an den "Kopf" anhängen.
  119.  
  120.     Das neue Formel-Fragment sieht nun so aus:
  121.  
  122.          =IF(B9<>B7;A2;IF(ABS(SUM(B5:B11)           ))
  123.  
  124.     Fehlt als Abschluß noch der Operator und der Vergleichs-Wert zu
  125.     "ABS...", sowie je ein neuer Wahr- und Falsch-Wert. Das haben wir
  126.     schon definiert, es ist der "Schwanz" von weiter oben; der wird
  127.     jetzt einfach hinten angekoppelt. Die neue Formel ist fertig...
  128.  
  129.          =IF(B9<>B7;A2;IF(ABS(SUM(B5:B11))>=30;25;10))
  130.  
  131.     ...und wir stellen mit erstaunten Blauaugen fest, daß alles, was ab
  132.     dem zweiten "IF" steht (von der letzten Klammer abgesehen) eine
  133.     vollständige, für sich alleine existenzfähige Formel ist:
  134.  
  135.          =IF(ABS(SUM(B5:B11))>=30;25;10)
  136.  
  137.   Und um Ihnen das zu sagen, habe ich so viele Worte gebraucht; es sieht
  138.   also komplizierter aus, als es tatsächlich ist!
  139.  
  140.   Wenn Sie nun alles getestet haben, sollten Sie nicht vergessen den
  141.   Originalzustand wieder herzustellen. Dummies durch originale Werte
  142.   ersetzen, Operatoren richtigstellen usw..
  143.  
  144.   Auf diese Weise können Sie bis zu 400 Zeichen in eine einzige Formel
  145.   quetschen. was eine große Zahl von weiteren IF-Abfragen ermöglicht.
  146.  
  147.   Sie könnten z.B. anstatt des Wahrwertes (hier "25") und/oder des
  148.   Falsch-Wertes (hier "10") eine Funktion, eine Formel oder eben eine
  149.   weitere IF-Bedingung definieren.
  150.  
  151.  
  152.   Auf beiliegender Tabelle "T&T_Funktionen002" finden Sie eine nochmal
  153.   erweiterte Formel als "Beispiel 3" . Kommentar dazu ist überflüssig.
  154.  
  155.  
  156.  
  157.  Trick 2.
  158.     Ersetzen Sie (zu Testzwecken) in einer komplizierteren Formel die
  159.     Parameter durch einfache, leicht überprüfbare Werte.
  160.  
  161.   Um bei obigem Beispiel zu bleiben:
  162.  
  163.    Wenn "ABS(SUM(B5:B11))" eine mehrstellige Zahl ergeben müßte, welche
  164.    Sie nicht auf Anhieb als richtig oder falsch einschätzen können, dann
  165.    ersetzen Sie die Inhalte der einzelnen Zellen des Bereiches durch
  166.    einfache Zahlen, wie (1,2,3,4,5,6,7).
  167.  
  168.    Errechnet dann die Formel in der Zelle eine magere "7" , dann wird
  169.    Sie das doch (hoffentlich) ins Grübeln bringen.
  170.  
  171.    Bei einem Ergebnis von "28" jedoch dürfen Sie zuversichtlich sein,
  172.    daß die Formel funktioniert und Sie guten Gewissens diese "Dummies"
  173.    wieder durch die echten Werte ersetzen können.
  174.  
  175.  
  176.  Trick 3.
  177.  
  178.     Wenn Sie irgendwo stecken bleiben, liegt es oft an den Klammern.
  179.  
  180.     Die erste Regel ist abzählen; soviel offene - soviel geschlossene
  181.     Klammern. Das alleine genügt natürlich noch nicht, weil es auch auf
  182.     die richtige Position der Klammer ankommt, aber hilfreich ist es
  183.     zunächst allemal.
  184.  
  185.     Denken Sie daran, daß (Ausnahmen wie "TODAY" bestätigen die Regel)
  186.     JEDE Funktion, welche Parameter annimmt, ein Klammer PAAR erwartet,
  187.     und sei es ein Leeres.
  188.  
  189.  
  190.  Trick 4.
  191.  
  192.     ist eigentlich Keiner, sondern nur eine Anmerkung:
  193.  
  194.     Anstatt den WAHR-Wert mittels Änderung von Operatoren oder
  195.     Bedingungen zu unterdrücken, können Sie das auch mit NOT erreichen;
  196.     im Beispiel 1 würde das dann so aussehen...
  197.  
  198.          =IF(NOT(B9=B7);A2;ABS(SUM(B5:B11)))
  199.  
  200.  
  201. Viel Spaß beim Experimentieren!
  202.  
  203. Günther Klug v. Biedermann, München (AC RUX)
  204. eMail    : klugvbiedermann.muc@t-online.de
  205. HomePage : http://amiga-club.de/homepage/rux/ruxpage.htm
  206.  
  207.  
  208.  
  209.  
  210.