Lotus 1-2-3 deel 5. """""""""""""""""""" Het is al weer enkele maanden geleden, maar wij waren gebleven bij het Graphic commando uit de hoofdmenubalk. Nu gaan wij verder met iets geheel anders: FORMULES en MACRO's. Eerst FORMULES. Er zijn er zo'n 100. De meesten hebben betrekking op specialistische toepasssingen, zoals: financiele-, statistische- en wiskundige functies. Verwacht niet, dat ik dat allemaal uitleg. De meesten zijn ook voor mij abracadabra. Ik beperk mij toch maar even tot de meest voorkomende, n.l. een aantal van de zgn. "statistische", oftewel: gewoon optellen, aftrekken, tellen en gemiddelde berekeningen. Hier komen zij: +@COUNT(a1.n1)= tel het aantal cellen, waar data instaat in de range a1.n1 +@AVG(a1.n1) = het gemiddelde uit die range (avg=average=gemiddelde) +@SUM(A1.N1) = de som van deze range (kan uiteraard ook negatief zijn. Je mist wellicht delen en vermenigvuldigen. Welnu, deze hoeven niet als formule te worden weergegeven, maar op de "normale" manier. Hieronder enkele voorbeelden van wat "normaal" is. +b5/n1 = datgene wat er in cel b5 staat delen door wat er in n1 staat. Op de zelfde manier vermenigvuldigen: +b5*n1 = Net zoals met pen en papier (en gum), kun je ook combinaties maken: +b5/(a1*z1) Overigens: het "plus" teken dient ervoor, dat het daarna volgende door LOTUS (o.i.d.) gelezen wordt als cijfers. Doe je het zonder +, dan wordt het gelezen als tekst en dus ook zo weergegeven; Probeer alles maar eens uit. Je kunt in formules ook o.a. gebruik maken van optie's, zoals "if, then, else" of "and, or, not". Een voorbeeld van het 1e: het betekend dus (net als in basic): als, dan, anders. +@if(b10<1,0,b12/(b11/100)) Betekenis: als b10 minder is dan 1, (oftewel: er staat niets in) zet dan 0 neer, anders neerzetten: b12 gedeeld door de uitkomst van b11 gedeeld door 100. Even een paar aandachtspunten: geen spaties ertussen, let op de extra haakjes (5e klas lagere school) let op de volgorde van berekening. Als je een uitkomst van nul hebt, die later gedeeld moet worden, krijg je een error: delen door nul kan niet. Daarom de oplossing: <1 (minder dan 1). Wat zijn MACRO's? """"""""""""""""" Dit is een vorm van automatiseren van vaak voorkomende handelingen. Dit maakt het werken met een programma (in dit geval dus een spreadsheet prg.) aanzienlijk eenvoudiger. Bovendien kun je op deze manier het uitvoerende werk (lees: invoeren van data en verdere verwerking daarvan) makkelijk uitbesteden aan iemand, die nauwelijks kaas gegeten heeft van computers en/of spreadsheets. Je zult het belang hiervan bij bedrijven wel kunnen begrijpen, neem ik aan. Als maker van een MACRO zou het dus een sport moeten zijn, om deze zo te maken, dat er geen of weinig uitleg bij nodig is. Wat allereerst van belang is, is dat je vooraf een plan hebt/maakt, wat de MACRO zou moeten doen en wat niet. Laten we aannemen, dat je een MACRO wilt maken, waarbij je in 3 onderelkaar gelegen cellen invoer van data wilt plegen, waarna in de cel daar direct onder (de 4e dus) de som (uitkomst van optelling) moet komen te staan. Ook wil je een "Pie" (taart) grafiek van die 3 cellen wegsaven, alsmede de sheet zelf. Verder moet het ook nog uitgeprint worden, waarna Lotus verlaten moet worden, terug naar DOS. Dat gaan we nu dus even uitwerken. Lotus herkend MACRO instruktie's door er een / (slash) voor te zetten. Logisch, want zo roep je ook de menubalk op. Daarna steeds de 1e letter van het gewenste commando. Dus precies, zoals je dat "handmatig" ook doet. Een MACRO is ook niets anders, dan een registratie van "normale" handelingen, die hij dan zelf uitvoert, als je de MACRO start. Voorbeeld: de pointer (cursor) staat bij de start van de MACRO op cel B3. De MACRO instruktie's zet je echter ergens anders, b.v. te beginnen bij B10. In die cel tik je: {?}~{down}. Het vraagteken is voor LOTUS het teken, dat het moet wachten op invoer, die afgesloten wordt met een return. Het ~ (tilde) teken is binnen een MACRO het return (enter) teken. Tussen de {} (accolade's) zet je allerlei besturingstekens. Aan het eind van deze serie art. zal ik een overzicht hiervan geven. Down tussen de accolade's betekend dus: een cel naar beneden. In cel B11 en B12 doe je dit nog een keer, dus {?}~{down} intikken. Het is belangrijk dat alle instruktie's onderelkaar in de zelfde kolom komen! De instructie om de ingevoerde data op te tellen komt niet in de MACRO (hoewel dit wel zou kunnen), doch in de sheet zelf, oftewel in cel B7: +@sum(b4.b6) Nu moet de pointer door de MACRO naar de volgende kolom gebracht worden, op de zelfde hoogte als de 1e invoer. Ik ga er namelijk vanuit, dat je later je invoer wilt uitbreiden, b.v. een maandelijkse invoer van 3 soorten inkomsten. Dat gaat zo: je tikt in cel B13: {richt}{up3} De pointer gaat dus 1 plaats naar rechts en dan 3 plaatsen omhoog. Nu moet de invoer nog even daadwerkelijk opgeteld worden (je hebt namelijk in de menubalk onder worksheet, global, recalculation de manier van berekenen op "manual" gezet (handmatig). Waarom? Omdat het anders de invoer later teveel vertraagd, als hij na iedere invoer meteen aan het rekenen slaat. Dit doe je door in te tikken in cel B14: {CALC} Nog iets: het is niet noodzakelijk om alle instruktie's onderelkaar te zetten, doch het komt het overzicht en eventueel later wijzigen wel ten goede. Blijf dit dus van het begin af aan doen! Je kunt 1 of 2 kolommen naar rechts er ook nog een verklaring per regel bij zetten. Handig voor jezelf, maar ook, als je de macro later aan iemand anders wilt uitleggen. Er bestaan ook speciale Macro recorders, zoals o.a. in LDW Power op de Atari. Wanneer je deze op "record" zet, wordt alles wat je daarna doet geregistreerd en kun je later met "play" (of een andere speciale toetscombinatie) weer afspelen. Makkelijk, maar bedenk wel dat ook foute handelingen geregistreerd worden!! Noot: Ten onrechte ben ik er tot nu toe van uitgegaan, dat je met een ENGELStalig programma werkt. Sommige van deze pakketten zijn echter ook in Nederlandstalige uitvoering in omloop. Bedenk dus, dat de meeste voorbeelden als zodanig dan vertaald moeten worden ingegeven. "Erase" wordt dan dus "Wis". Logisch niet? Maar nu komt het: Tijdens mijn recente eerste experimenten met het programma "SYMPHONY" (van de zelfde makers als LOTUS 1-2-3) kwam ik tot een verbazende maar ook gevaarlijke ontdekking. Ik importeerde een LOTUS sheet in Symphony. LOTUS is bij mij Engelstalig, Symphony Nederlandstalig. Laat hij nu de Engelse formules en Macroafkortingen vertaald hebben?? Zeer knap. Zo werd b.v. "if, then, else: als, dan, anders, en sum werd som. Maar ook de Macro ging op de Hollandse toer. Zo werd de "W" van "worksheet" geinterpreteerd als "wissen". Voel je'em? Gelukkig was mijn sheet "geprotect", pardon: beveiligd, zodat ik er gelukkig met een zodanige foutmelding van af kwam. Het is maar dat je het weet!