BEISPIELE
30
Die Werte in diesen beiden Feldern bilden folglich in jedem Fall eine Umklammerung
der Werte in den Feldern C2 bis N2; ihre Differenz ist immer ein Vielfaches von fünf.
Unsere nächste Formel zeigt die vertikale Diagrammskala in der A-Spalte an:
[M]
sp=$Q2+ (14-z
Der Abstand zwischen aufeinanderfolgenden Zahlen auf der Skala ist (P2-02) / 10. Da
die Differenz zwischen dem Inhalt von P2 und 02 ein Vielfaches von 5 ist, ergibt sich
immer ein einfacher Wert als Skalenabstand.
Dieser Abstand wird mit einer Zahl (14-zleO) multipliziert, die in Zeile 14 bei Null beginnt
und in Einerschritten bis zu einem Wert von 10 in Zeile 4 zunimmt. Das Resultat wird
zum minimalen Wert aus 02 addiert und produziert so die einzelnen Feldinhalte.
Das Endergebnis sieht dann so aus, daß der Wert aus Feld 02 in A14 und der aus
P2 in A4 ausgegeben wird. Diese beiden Felder bilden die obere und die untere
Begrenzung der Skala, und die dazwischen liegenden Felder enthalten regelmäßig
abgestufte Werte.
[B4] sp="!"
[Zeilen 4 bis 14J
[814] zLe=wiederh("-",breiteO+1)
[C15] zLe=monat(spO-2)
Damit werden die Achsen eingezeichnet, mit Beschriftung für die horizontale Achse
(Monatsnamen). Dabei wurde der SuperBASIC ähnliche Aufteilungsoperator (bis)
verwendet, um lediglich die ersten drei Buchstaben jedes Monats auszugeben.
[C4] wenn(index(1
Diese Formel leistet die ganze Arbeit zur Erstellung der Balken und muß in jedes Feld
des Tabellenblocks kopiert werden:
Echo,FeLd
C4,über
Die Formel bedarf einer kurzen Erläuterung. Sie verwendet die wennO-Funktion für die
Entscheidung, ob ein Balkenstück angezeigt werden soll. wennO übernimmt drei
Argumente, wovon das erste ein Ausdruck sein muß, der ein numerisches Resultat liefert.
Wenn dieses verschieden von Null ist, zeigt das Feld das zweite Argument, welches
alphanumerisch (Text)oder numerisch sein kann. Andernfalls, d.h. wenn das Resultat
Null ist, wird das dritte Argument angezeigt, welches ebenfalls eine Textketteoder eine
Zahl sein kann.
Die Formel vergleicht in jedem einzelnen Feld die Zahl in Spalte 1 der betreffenden Zeile
(der Beschriftung der vertikalen Achse) mit der Zahl in Zeile 2 der betreffenden Spalte
(dem grafisch darzustellenden Wert). Wenn die Achsenbeschriftung größer ist als der
Grafikausgangswert, ist die Bedingung wahr (1),und es erfolgt keine Anzeige; wenn die
Beschriftung einen kleineren oder den gleichen Wert aufweist, ergibt die Bedingung
Null, worauf das Feld mit drei Sternchen gefüllt wird. Auf diese Weise wird in jeder Spalte
ein Balken in der richtigen Höhe eingezeichnet.
Da für alle Felder genau dieselbe Formel verwendet wird, kann die Feldadresse weder
absolut noch relativ sein. Der Verweis auf die grafisch darzustellenden Werte muß sich
von Spalte zu Spalte ändern, d.h. muß bezüglich der Spalte relativ sein, sich jedoch
bei der zeilenweisen Abwärtsbewegung immer auf Zeile 2 beziehen. Was wir in diesem
Fall brauchen, ist eine Art Feldverweis, der relativ in Bezug auf Spalten, jedoch absolut
in Bezug auf Zeilen ist.
Zum Glück kann zu diesem Zweck die indexO-Funktion herhalten, die zwei Parameter
übernimmt, eine Spaltenzahl und eine Zeilenzahl, und als Ergebnis den Inhalt des Feldes
im Schnittpunkt liefert. Damit lassen sich beliebige Kombinationen von absoluten und
relativen Verweisen herstellen, zum Beispiel:
Spaltenverweis
Funktion
index(5,5)
absolut
relativ
index(sPO,5)
absolut
index(5,zleO)
relativ
index(sPO,zleO)
Le
* ($P2-$Q2)
/10
0)
[Spalten B bis NJ
(bis
3)
[Spalten C bis NJ
>
,zLeO)
index(spO
,2) ,"","***")
Bereich
C4:N13
Zeilenverweis
absolut
absolut
relativ
relativ
[Zeilen 4 bis 14J
3/85
(