T&T_ZELLE (Dazu eine gleichnamige Tabelle, welche Sie z.B. nach TurboCalc:Tabellen kopieren sollten)... und als Anhang der Versuch einer Begriffsbestimmung. Zelle (CELL) ist eine indexorientierte Funktion. In der Arbeit mit Spreadsheets haben indexorientierte Funktionen einen sehr großen Anteil. Es ist in einem Manual natürlich nicht möglich, für jede der Funktionen ausführliche Beschreibungen bereitzustellen - deshalb hier ein paar tiefergehende Einzelheiten. Mit Ausnahme von ZELLE (CELL) verlangen alle anderen indexorientierten Funktionen - wie z.B. WVERWEIS (HLOOKUP) - einen zu definierenden Bereich als Ausgangspunkt für Such-Operationen und einen wählbaren oder eingebauten Versatz (Offset) als Wegweiser zur gesuchten Zelle. Die Funktion ZELLE (CELL) sucht nichts, sondern greift nur auf EINE EINZIGE Adresse zu, welche durch die Offset-Parameter bestimmt wird. Dabei kann durchaus auch ein Bereich als Adresse bestimmt werden, indem man nämlich ZWEI der Funktionen "CELL" durch Doppelpunkt ":" verknüpft. Der hauptsächliche Anwendungsbereich für "CELL" liegt aber zweifellos in der Verwendung zusammen mit der Makrosprache. Es macht eigentlich wenig Sinn in einer statischen Applikation - damit sind Applikationen gemeint, welche keiner Makro-Steuerung bedürfen, weil sie immer nur auf fixe Adressen zugreifen (z.B. in einem periodisch zu erstellenden Report) - in eine Zelle einzugeben: "=CELL(-2;4)", wenn man durch weniger Nachdenken eingeben kann, sagen wir, "=A35" und damit dasselbe erreicht (Ausnahmen gibt es natürlich schon). Der Syntax für ZELLE lautet... =ZELLE(± Zeilenversatz;± Spaltenversatz) ACHTUNG! Wenn Sie beispielsweise MaxiPlan (TM) oder MaxiPlan Plus (TM) gewöhnt waren, müssen Sie umdenken! Dort waren die Parameter "richtig" (erst Spaltenversatz (X-Achse) dann Zeilenversatz (Y-Achse); bei TurboCalc ist es umgekehrt! Die Funktion ohne Parameter, also "=CELL()", liefert "#FEHLER". Die Funktion liefert den Inhalt derjenigen Zelle, deren Entfernung von der Zelle mit dieser Formel, durch die Parameter bestimmt wird, wobei negative Parameter einen Standort links bzw. oberhalb und positive Parameter einen Standort rechts bzw. unterhalb der Zelle bedeuten. =CELL(1;0) setzt den Wert dieser Zelle gleich dem Inhalt der Zelle, welche genau unter ihr liegt - egal was dort (vorausgesetzt Sie haben TurboCalc4.0 oder besser) drin ist. =CELL(-1;0)^2 setzt den Wert dieser Zelle gleich dem Quadrat des Inhalts der Zelle, welche genau über ihr liegt. Jetzt ist es aber NICHT mehr egal, was diese Zelle enthält, denn die Quadratur (beispielsweise) eines textlichen Inhalts dürfte auf Hindernisse stoßen; die Zelle wird den Fehler-Wert "#TYP" anzeigen. Eine "0" als 1. Parameter bedeutet eine Zieladresse in derselben ZEILE. Eine "0" als 2. Parameter, eine Zieladresse in derselben SPALTE. Somit bedeutet "=CELL(0;0)" die Zelle selbst. Wenn Sie das so in eine Zelle eingeben, haben Sie selbst Schuld; genau so gut hätten sie in die Zelle eine "0" eingeben können, denn sollte die Zelle vorher irgendwas als Inhalt gehabt haben, so ist das durch die Eingabe der Formel nun weg - folglich ist der neue Inhalt "0". Diese ganz spezielle Zell-Adressierung hat nur in Verbindung mit der Makro-Sprache eine sinnvolle Verwendung, sie werden darüber in einem Work-Shop lesen - irgendwann. Wenn Sie aber dies in eine Zelle eingeben: =CELL(0;0)+1 dann sieht das momentan zwar ziemlich idiotisch aus - man könnte ja dann gleich eine "1" eingeben - ist es aber durchaus nicht. Versuchen Sie es also trotzdem! Gleich nach der Eingabe wird die Zelle eine "1" als Inhalt haben. Drücken Sie nun die Funktionstaste F1 (neuberechnen) so wird der Wert dieser Zelle "2" annehmen (also der ursprüngliche Wert + 1). Dies geschieht bei jeder Neuberechnung wieder. Haben Sie eine ältere Version als TurboCalc4.0, dann können Sie die nachfolgende Warnung vergessen: VORSICHT ! Das Ding hat seine Tücken - dann, wenn Sie bei "Iteration" einen Wert höher "1" eingestellt haben. Dann wird nämlich entsprechend oft "neuberechnet" und der Wert in obiger Beispiel-Formel wird nach jedem neuberechnen entsprechend hoch ausfallen! (Siehe auch "T&T_Berechnen.txt"). Dies sollte Ihnen bereits bei der Eingabe dieser Formel auffallen (falls Sie "automatische Berechnung" nicht ausgeschaltet haben), denn schon da wird ja der Inhalt berechnet und entsprechend höher als 1 ausfallen! In nachfolgenden Ausführungen wird von Iteration 1 ausgegangen. Wenn Sie im Optionen Menu Tabelle/Neuberechnen auf automatisch geschaltet haben, so wird bei jedem einzelnen Vorgang irgendwo im Blatt, welcher eine Neuberechnung nach sich zieht - das sind mehr als Sie glauben - diese Zelle im Wert um 1 erhöht. Damit könnten Sie also beispielsweise beobachten, welche Art von Eingaben eine Berechnung nach sich ziehen und welche nicht. Sie könnten aber auch z.B. mit dieser Formel: =IF(A4>3;CELL(0;0)+1;CELL(0;0)-1) den Inhalt der Zelle um "1" (oder einen beliebigen anderen Wert) erhöhen, immer dann wenn der Wert in Zelle A4 (falls da ein numerischer drin ist) bei einer Neuberechnung des Blattes größer als 3 ist, und ihn vermindern, wenn das nicht zutrifft. Anderes Beispiel: =IF(A4<>3;CELL(0;0)-CELL(0;0);CELL(0;0)+1) Bei jeder Neuberechnung wird, falls A4 ungleich "3" ist, der Wert auf "0" gesetzt, andernfalls um "1" erhöht. Anderes Beispiel: (siehe Tabelle "T&T_Funktionen003.TCD") =IF(A4=3;CELL(0;0)+1;CELL(0;0)) =IF(A4>3;CELL(0;0)+1;CELL(0;0)) =IF(A4<3;CELL(0;0)+1;CELL(0;0)) Diese 3 Formeln im Bereich A6:A8 der Beispiel-Tabelle errechnen, wie oft der Wert in Zelle A4 nach einer Neuberechnung gleich "3" größer "3" kleiner "3" war. Bei einigem Nachdenken werden Ihnen für "CELL(0;0)" - zusammen mit Parametern - Dutzende von Anwendungen einfallen. Anderes Beispiel: (siehe Tabelle "T&T_ZELLE.TCD") =IF(SUM(CELL(-5;2):CELL(-1;3))<30;CELL(-5;0);CELL(-4;0)) setzt den Wert dieser Zelle auf den Wert von A12 ("heinz"), wenn der summierte Inhalt des Bereiches, welcher 5 Zeilen oberhalb dieser Zelle und 2 Spalten rechts davon beginnt und 1 Zeile oberhalb und 3 Spalten rechts davon endet, kleiner als 30 ist, sonst auf den der Zelle A13 ("erna"). ANMERKUNG: Wenig Sinn würde obige Formel aber OHNE die Funktion SUMME (SUM) machen: =IF(CELL(-5;2):CELL(-1;3)<30;cell(-5;0);CELL(-4;0)) würde nur den Wert in "CELL(-5;2)" zur Berechnung heranziehen (also den ERSTEN Wert im Bereich)! Wie Sie sehen ist durch die Verwendung in Kombination mit anderen Funktionen der Anwendungsbereich schon wesentlich umfangreicher. Wenn Sie die Zelle mit einer standortabhängigen Formel kopieren (oder "lösen") und an einen beliebigen anderen Ort des Blattes setzen, so ändern sich die Bezüge (da sie relativ sind) entsprechend. Ob das dann auch ein (vernünftiges) Ergebnis liefert ist eine andere Frage - dafür müssen Sie natürlich selbst sorgen, gel! Hoffentlich fanden Sie hier ein paar Neuigkeiten! Die zugehörige Tabelle zeigt noch ein paar weitere Beispiele! Viel Spaß ---------------- Zum Abschluß der... Versuch einer Neubestimmung von Begriffen - damit nicht der eine vom Radfahren redet und der andere vom Paddeln ;-)). Das TurboCalc-Manual nennt nur zwei Arten von Bezugs-Adressen... relative und absolute. Ich möchte diese erweitern um... standort-abhängige und standort-unabhängige! Ginge es nach mir (hi Michael!), würde ich auch die Definition für relativ/absolut anders formulieren wollen, nämlich: Eine ABSOLUTE Zelladresse ist definiert durch die Angabe der Blatt-Koordinaten (dafür gibt es sie ja, um eine zweifellsfreie Bestimmung festzulegen). Wenn Sie HIER geschrieben sehen "=A16", dann wissen Sie welche Zelle die bezogene ist und können sich - auch wenn sie die Position der Formel im Blatt nicht kennen - vorstellen, wo der Bezug ist. Von "relativ" kann garnicht die Rede sein, sie ist ABSOLUT! Eine RELATIVE Zelladresse wird durch die zweidimensionale Angabe der Entfernung vom Standort der Formel definiert. Wenn Sie HIER geschrieben sehen "=CELL(0;-2)", dann wissen Sie zwar, daß eine Zelle in derselben Spalte und 2 Zeilen links des Standorts dieser Formel die Bezogene sein wird, aber die Lage der bezogenen Zelle in der Tabelle können Sie sich NICHT ohne Kenntnis der Position der Formel vorstellen, weil Sie RELATIV ist. Diese "Entfernung" nennt man Offset (Versatz); die gemeinte Zelle ist um Y Zeilen-Positionen vertikal und X Spalten-Positionen horizontal "versetzt" angesiedelt. Lassen Sie sich durch die Begriffe "horizontal" und "vertikal" nicht verwirren. Spalten sind zwar vertikal aufgebaut, aber wenn man die Spalte wechselt, dann muß man sich horizontal bewegen! Dasselbe Denkschema gilt sinngemäß für Zeilen; sie sind zwar horizontal aufgebaut, aber um in eine andere Zeile zu gelangen, muß man sich vertikal bewegen! Die Tatsache, daß BEIDE Adressierungsarten beim Standortwechsel der Formel, in welcher sie verwendet werden, ihre Bezüge anpassen, mag dazu verleiten, sie unter "relativ" einzuordnen. Ich verwende lieber zwei weitere Kriterien zur genaueren Definition: Standortabhängig und standortunabhängig. STANDORTABHÄNGIGE Bezugs-Adresse: Wird eine Formel, in welcher eine Zelle als Bezugs-Adresse genannt wird durch irgendwelche Manipulationen vom momentanen Standort an einen anderen "gesetzt", dann wird auch die Bezugs-Adresse eine andere sein, falls sie "standortabhängig" ist. Standortabhängig sind zunächst einmal alle Bezugs-Adressen, ganz gleichgültig ob es sich um (in meiner Definition) "absolute" oder "relative" Zell-Adressen handelt. Der einzige Unterschied ist der, daß absolute Bezugs-Adressen beim Standortwechsel angepaßt, also die ursprünglichen Koordinaten GEÄNDERT werden, relative aber NICHT (in was sollte sich beispielsweise "=CELL(5;3)" auch ändern?). Die Adressierung =C5 wird - gleichgültig wo im Blatt diese Formel EINGEGEBEN wurde - als Bezugs-Adresse "C5" haben und deren Wert annehmen; nur, wenn Sie diese Formel an andere Stelle versetzen, sagen wir eine Zeile höher, dann wird die Bezugs-Adresse "angepaßt" UND DIE FORMEL SELBST GEÄNDERT in "=C4". Es ist also NICHT MEHR DIESELBE Formel! Dagegen wird =Cell(5,3) egal wo im Blatt Sie sie diese Formel eingeben, die Bezugs-Adresse diejenige Zelle sein, welche fünf Zeilen unterhalb und 3 Spalten rechts derjenigen Zelle ist, in welcher diese Formel steht. Versetzen Sie nun diese Formel an andere Stelle, so wird die Bezugs-Adresse immer noch 5 Zeilen rechts und 3 Zeilen unterhalb sein - aber vom neuen Standort. Deshalb ändert sich aber die Formel nicht; ES BLEIBT IMMER DIESELBE Formel! ACHTUNG: Kopieren Sie jedoch eine Zelle mit negativen Bezügen (beispielsweise "=Cell(-2;-2)") in Zelle B2, so wäre die Bezugsadresse ja links und oben außerhalb des Blattes und es würde "#WERT" zurückgegeben. In die andere Richtung (rechts und/oder unten außerhalb des Blattes zu geraten) dürfte das nicht passieren, weil kein vernünftiger Mensch eine Tabelle mit den Ausmaßen größer ZZZ:999999 einrichten wird. Nur scheinbar kurios: Wenn Sie in die Zelle B26 eingeben "=A5", dann könnten Sie in dieselbe Zelle (B26) mit genau demselben Ergebnis auch eingeben "=CELL(-21;-1). Beim Standortwechsel werden BEIDE Formeln, wenn Sie sie in dieselbe Zelle kopieren, auf genau denselben Bezug deuten! Dies beweist, daß auch ein (in meinem Sinne) absoluter Bezug im Grunde nichts anderes ist, als die Definition eines Versatzes (Offset) - nur eben mit anderen Mitteln. STANDORTUNABHÄNGIGE Bezugs-Adresse: StandortUNabhängige Bezugs-Adressen sind (nenne wir sie mal) "mutierte" absolute Zell-Adressen (nach meiner Definition von absolut). Aus einsehbaren Gründen können (nach meiner Definition) relative Zell-Adressen nicht "mutieren"! Da würde TurboCalc sofort "#FEHLER" zurückgeben, wenn Sie "=CELL($3;$5)" eingeben würden! Die "Mutation" absoluter Zell-Adressen zu standortUNabhängigen kann auf diverse Arten geschehen. 1. Sie geben der Zell-Adresse einen "Namen" (mit der Funktion "Namen geben"). Stellen Sie nun in einer Formel einen Bezug zu "Name" her (z.B., "=RUX*3"), so wird immer nur auf diese Zelle bzw. diesen Bereich zugegriffen, welchem Sie vorher den Namen "RUX" gegeben haben, gleichgültig wohin Sie die Formel kopieren. ACHTUNG: Leider erkennt TurboCalc eine Standort-Veränderung von "definierten Namen" immer noch nicht - weder beim KOPIEREN (COPY) an andere Stelle - noch beim AUSSCHNEIDEN (CUT) und anschließendem EINFÜGEN (PASTE) an anderer Stelle Dies ist ein echtes Manko, denn TC greift dann immer noch auf die "alte" Adresse zu. Ich bin aber sicher, daß dies bei einem der nächsten Updates behoben wird; zumindest sollte TC den Anwender darauf aufmerksam machen, wenn er einen "Namen" an andere Stelle versetzt (oder gar löscht). Sollte sich also bei ihren Anwendungen die Notwendigkeit dazu ergeben, müssen Sie vorläufig noch "Name" mit der Funktion "Namen geben" mit DEMSELBEN Namen neu definieren (wobei die Position in der Liste der Namen einfach überschrieben wird). Natülich können Sie "Name" auch erst gänzlich aus dieser Liste löschen und dann neu definieren. Beim Einfügen von Zeilen/Spalten jedoch wird ab Version 4.0 nun auch ein definierter Name angepaßt. 2. Sie stellen einer der Teil-Koordinaten der Zell-Adresse ein "$" Zeichen voran. Diese Teil-Koordinate wird daraufhin zu einem standortUNabhängigen Teil der Bezugsadresse - er ändert sich bei einer Standortverlagerung NICHT. Beispiel: =$C5 wird bei einer Verlagerung der Formel in die Zelle rechts daneben KEINERLEI Veränderung erfahren, da die Spalten-Koordinate "C" nun standortUNabhängig ist und die standortabhängige Zeilen-Koordinate (5) sich nicht geändert hat (die Formel ist ja immer noch in derselben Zeile). Bei einer weiteren Verlagerung, diesmal um eine Zeile nach oben wird die Formel jedoch in =$C4 geändert. Sinngemäß dasselbe passiert mit der 2. Teil-Koordinate (Zeile) der Bezugs-Adresse, wenn Sie NUR dieser ein "$" voranstellen. 3. Sie stellen beiden Teil-Koordinaten ein "$" voran und machen so die ganze Bezugs-Adresse standortUNabhängig. Gleichgültig wohin im Blatt Sie die Formel kopieren, sie wird sich immer auf dieselbe Zelle (z.B., "$C$5") beziehen. Dasselbe kann man sinngemäß auch mit einem Bereich, dort natürlich mit noch mehr Kombinationsmöglichkeiten, machen. Diese Beispiele: =SUM($B5:C7) =SUM($B5:$C7) =SUM($B$5:$C$7) sind nur 3 von 14 möglichen Kombinationen (gänzlich ohne $-Zeichen eingeschlossen), und jede von ihnen hat eine andere Bedeutung und Wirkung. MERKE: Das $-Zeichen in einer Adresse macht diejenige Koordinate VOR der es steht, zu einem standortUNabhängigen Bestandteil der Bezugs-Adresse. Steht das $-Zeichen vor beiden Koordinaten einer Bezugs-Adresse, so ist die GESAMTE Bezugs-Adresse standortUNabhängig. Bei welchen Gelegenheiten ein Bezug standort-abhängig oder -unabhängig sein sollte ist keine Geschmacksfrage, sondern wird durch die Art der Anwendung bestimmt. Dazu gehört neben dem Verständnis von Abläufen (vorzugsweise im Makro) auch eine Portion abstrakten Denkvermögens und Erfahrung, Erfahrung, Erfahrung.....! Günther Klug Frh. v. Biedermann, München eMail : KLUGvBiedermann.MUC@t-online.de HomePage : http://amiga-club.de/homepage/rux/ruxpage.htm