format code vs formule
Eerder deze week tipte Ward mij over het gebruik van "Format code" (hierna FC).
Werkt iemand hier wel eens met FC in OpenOffice of Excel?
Met FC kun je een bepaald "format" op de waarde van een cel loslaten. Zo kun je bijv. aangeven dat een negatieve tijdsindicatie een rode kleur moet hebben en een positieve een groene kleur. Een tijdsindicatie van 0 uren, 0 minuten en 0 seconden maken we blauw. De FC ziet er (in OpenOffice) dan als volgt uit:
[>0][GREEN]UU:MM:SS;[<0][RED]UU:MM:SS;[BLUE]UU:MM:SS
Nu kun je niet alleen kleuren wijzigen, maar je kan bijvoorbeeld ook een tekst opgeven:
[>0][GREEN]UU:MM:SS;[<0][RED]"ONJUIST!";[BLUE]UU:MM:SS
Dit zorgt ervoor dat als de tijdsindicatie negatief is, er een "onjuist" melding wordt getoond. Nu vraag ik me af of het de bedoeling is om dit soort waarschuwingen te verwerken in de FC. Je zou die waarschuwing namelijk ook in de formule zelf kunnen opnemen:
IF(A1<0;"ONJUIST!";A1)
Door de FC nu een klein beetje aan te passen, bereiken we exact hetzelfde effect:
[>0][GREEN]UU:MM:SS;;[BLUE]UU:MM:SS;[RED]
De waarschuwingstekst laten we achterwege, en we geven aan dat tekst in het rood moet worden getoond. De "onjuist" melding zal dus in het rood getoond worden, exact zoals bij de eerste variant.
Maar welke van deze 2 manieren is nu de juiste vraag ik me af. Waar gebruik je die FC precies voor?
Gewijzigd op 05/02/2015 00:59:46 door Ozzie PHP
Voor de volledigheid: Als je geen tekst wil kan je ook nog werken met voorwaardelijk opmaak.
Ook nog de fc bestaat uit 4 delen. standaard: positief; negatief; nul; tekst.
Nu schrijf je bij de fc zelf nog eens diezelfde standaards erbij. Dus enkel nodig als je hier afwijkt.
Ook goed forum voor MS-office is http://answers.microsoft.com/nl-nl/office/forum/excel de fc is volledig afgekeken van ms door openoffice. Als ze iets goed doen mag het ook geweten zijn.
Ik DENK dat fc sneller is dan formule. voor het geval je er een paar honderden hebt.
Jan
Daarmee krijg je dan een logische vergelijking. Wil je slechts de opmaak van de uitkomst veranderen, dan gebruik je daarvoor een opmaakoptie, zoals die format code. Is het je vooral te doen om de inhoud van de uitkomst, dan is een formule meer op zijn plaats.
Als je het opzetten van een spreadsheet ziet als het bouwen van een financieel of rekenkundig model, dan zou de logica daarvan overeind moeten blijven wanneer je alle opmaak weggooit.
De format code heeft een typische historie: figuurlijke rode cijfers ook letterlijk rood weergeven. Veranderen negatieve bedragen als je ze in zwart zou weergeven of printen? Nee, inhoudelijk niet, dus is een format code in dergelijke gevallen op zijn plaats.
De zaak verandert als je, zoals in jouw voorbeeld, fouten wilt melden. Dan draait het wel om de inhoud. En dan is een formule meer op zijn plaats. Het draait dan om de fout en de foutmelding; dat je die vaak rood weergeeft, is een bijzaak.
@Jan R
>> Ook nog de fc bestaat uit 4 delen. standaard: positief; negatief; nul; tekst.
Ja, maar die laatste hoef je er niet per se bij te zetten (in ieder geval hoe ik het tot nu toe heb ondervonden).
>> Nu schrijf je bij de fc zelf nog eens diezelfde standaards erbij. Dus enkel nodig als je hier afwijkt.
Dit is vrij raar. Ik had ze er in het begin in OpenOffice helemaal niet bij gezet, maar OpenOffice (in mijn geval eigenlijk LibreOffice maar dat zal hetzelfde zijn) die zet ze er op een gegeven moment zelf bij. Dus ik typ ze zonder bijv. [>0] en als ik dan later terug kijk, dan heeft OpenOffice ze er zelf bij gezet.
>> Ik DENK dat fc sneller is dan formule. voor het geval je er een paar honderden hebt.
Dit meen ik dus ook gezien te hebben. Als ik bijv. 50.000 cellen vul met IF-statements wordt mijn bestand veel groter (en trager bij het opslaan) dan wanneer ik die IF-statement achterwege laat en het met format code oplos.
@Ward
Ik snap wel wat je bedoelt te zeggen. De foutmeldingen die ik geef, zijn in feite "hints" dat er iets niet klopt. Dat zou je in feite ook met jouw voorbeeld van de kleuren kunnen vergelijken. Een rood getal kan een negatief getal zijn, maar kan ook duiden op "dit getal is onjuist". Daarom vind ik het dus een beetje vaag waar die format code nu echt voor is bedoeld. Maar wellicht is wat Jan R zegt wel terecht, dat het beiden kan. Het voordeel is wel dat het gebruik van format code een stuk minder "zwaar" is dan overal een IF-statement te gaan plaatsen.
Lang niet elke Excel-gebruiker kan even goed met formules overweg. Het lijkt onderhand programmeren ;-) Ik vermoed dat mede daarom meer à la Word opmaken werd toegevoegd.
Tegen meldingen kun je ook anders aankijken. Ik heb een goede vriend met een zeldzame vorm van kleurenblindheid: hij ziet helemaal geen kleuren. Een van de hoofdregels uit accessibility is daarom dat je nooit uitsluitend met kleur ergens een betekenis aan mag geven. Dus dan doen we maar een pictogram erbij en prominent het woord "Fout".
Wil je de uitkomst ergens hergebruiken? Bijvoorbeeld in een optelling van uren? Dan moet je eigenlijk een formule gebruiken die een foutwaarde oplevert. Of op zijn minst een N/A (not available) oftewel #N/B in Excel. Net zoals je bij PHP zou doen met een exception, een trigger_error() of desnoods een return false.
Hmmm, oké ... naja, het document is primair bedoeld voor mezelf, dus ik denk dat ik maar gewoon die format code op m'n eigen manier gebruik :) Dat programmeren klopt overigens wel, ik had gisteren ook zo'n "leuke" formule gemaakt :) Dan komt ineens je programmeerervaring toch handig van pas :)
Ja, dat je automatisch haakjes-openen en haakjes-sluiten op- en aftelt bijvoorbeeld ;-)
Op zich kun je er best mee uit de voeten. Niet even ideaal en overzichtelijk zoals je het in PHP zou doen. Ik heb letterlijk telkens een "onderdeelje" gemaakt in een losse cel, en dat dan weer geplakt in de "hoofdformule". Want alles ineens in de "hoofdformule" intypen is dusdanig onoverzichtelijk dat dit me een betere oplossing leek :)
PHP leren begint meestal ook met copy-paste.
Hoewel het dan meestal gaat om voorgekauwde copy-paste en dat is toch weer wat anders. Mijn actie was vooral bedoeld om het overzicht te behouden. Al die geneste IFs ORs en ANDs verdeeld over 2 regels is allesbehalve leesbaar.