Blog

Waarom Excel niet geschikt is voor een Financieel Model

Ondanks dat ik over de jaren zelf talloze Financiële Modellen heb ontwikkeld met behulp van Excel, ben ik toch tegenstander van het gebruik ervan voor dat doeleinde. Een beetje zoals ex-rokers de meest fanatieke anti-rokers zijn. Doordat zij er goed mee bekend zijn en daardoor ook de nadelen ervan aan den lijve hebben ondervonden. Voor Excel geldt datzelfde voor mij: Excel en VBA hebben voor mij geen geheimen meer, ik begrijp hoe een Financieel Model robuust en tegelijkertijd flexibel kan worden opgezet en hoe de output optimaal bij de informatie behoefte van de eindgebruikers kan worden aangesloten. Door die ervaring ben ik ook regelmatig aan de tekortkomingen van Excel blootgesteld.

Begrijp me vooral niet verkeerd; ik vind Excel een geweldig programma. Maar dan alleen voor één specifiek doeleinde: het verrichten van een eenmalige analyse. Een analyse waarbij de uitkomsten zelf worden gebruikt of met een klant gedeeld. En vervolgens verwijder je het model weer omdat je het nooit meer zult gebruiken. Dan is het een geweldig flexibele tool waarmee heel snel antwoorden op allerlei vragen kunnen worden gegeven. Maar voor het ontwikkelen en onderhouden van een Financieel Model ben ik tegenstander van het gebruik van Excel. Daarvoor is Excel the wrong tool for the job.

Hieronder ga ik in op de beperkingen van Excel zoals ik er tegenaan ben gelopen.

1) Grotere modellen

Excel kan niet met grotere hoeveelheden data overweg. En dan heb ik het niet alleen over het feit dat Excel slechts één miljoen rijen heeft. Hoewel dat uiteraard al een groot probleem is. Stel dat één van de tabellen in je model als basis wordt gebruikt voor verdere analyse en output. Je verricht bijvoorbeeld analyses op die tabel met een draaitabel, daar maak je weer grafieken van en die dienen tot input voor analyse en communicatie. En die tabel groeit elke maand met 100.000 rijen, wat bij veel organisaties zomaar mogelijk is. Hoe verwerk je de 11e en 12e maand dan? Sla je die op in een nieuw werkblad ernaast? En je draaitabel dan? En eventuele overige functies of VBA code? Dat wordt natuurlijk een regelrechte ramp!

Of ga je, zoals dit meestal wordt opgelost, elke maand alle detailinformatie in een losse excel opslaan en alleen totaalinformatie vanuit elke maand in een totaalmodel onder elkaar opslaan? Zodat je toch nog trendanalyses kunt uitvoeren. Maar wat doe je als je voor één specifiek onderdeel (bijvoorbeeld één product, regio of afdeling) de trend van de afgelopen 2 jaar wilt zien. Dan moet je dus alle maand-excellen af en één voor één die informatie eruit filteren en in een ad-hoc analyse excel opslaan. Veel succes…

Maar naast de beperking van één miljoen rijen speelt op dit gebied een nog veel groter probleem. Namelijk dat ver voordat die één miljoen rijen zijn bereikt de modelperformance traag gaat worden. Veel Excel gebruikers kunnen daarover meepraten (diepe zucht, en dan “wat is Excel weer traaaaaaag” of “Neeeee, Excel start wééééér zo langzaam op”). Dat komt doordat Excel het hele model in het RAM geheugen opslaat. Om Excel te kunnen laten werken zoals het werkt is het nodig om dat na elke aanpassing in het model, hoe klein ook, opnieuw te doen. Bij kleine modellen merk je daar helemaal niets van, maar als je model groeit wordt dit langzaam maar zeker een enorme beperking.

2) dimensionaliteit

2. Excel kent slechts 2 dimensies: rijen en kolommen. In heel veel financiële modellen is dat een grote tekortkoming. Bijvoorbeeld:

·       een situatie met een tabel met alle grootboekrekeningen en de oprol naar sub- en hoofdcategorieën. En een tweede tabel met de winst en verliesrekening op grootboekrekeningniveau per maand.

·       een tabel met alle verkopen in een maand per product. En een tweede tabel met alle detailinformatie per product.

De voorbeelden zijn oneindig. In dergelijke situaties is het nodig om informatie vanaf de ene tabel te koppelen aan de andere. In Excel kan dat eigenlijk alleen maar door middel van verticaal zoeken (of één van de vele manieren om dat na te bootsen). In een eenmalige ad-hoc analyse is dat geen enkel punt. Maar in een Financieel Model wat onderhouden moet worden weldegelijk:

·       bij invoer van nieuwe week- of maanddata of aanpassingen van zoektabellen is elke keer een hoop modelonderhoud nodig én een groot risico op fouten

·       het is lastig om vanuit de formule te achterhalen wat er nou precies gebeurt

·       bij grotere modellen wordt de performance geraakt door veel verticaal zoeken

·       als bij een iets complexer model meerdere tabellen aan elkaar moeten worden gekoppeld wordt het model onoverzichtelijk, arbeidsintensief en foutgevoelig. Echt complexe modellen met heel veel gekoppelde tabellen zijn eigenlijk niet meer te doen.

3) Lastig te Automatiseren

In elk Financieel Model gebeuren grofweg drie dingen: 1) er wordt data in het model ingevoerd, 2) op die data worden bewerkingen verricht en 3) de output vanuit die bewerkingen wordt ergens getoond.

In de praktijk wordt dit nog veel handmatig gedaan. Dat neemt drie nadelen met zich mee:

Arbeidsintensief

Bij handmatig verwerken is het nodig om, als er wekelijks/maandelijks nieuwe data in een model wordt ingevoerd, veel handelingen te verrichten. Bijvoorbeeld ontvangst van de data, veelal per e-mail vanuit een (interne) leverancier of ontsluiting van de data vanuit een systeem door tabellen naar CSV of Excel te exporteren. Die data wordt dan handmatig gekopieerd en geplakt in het model. Vervolgens moeten de bewerkingen op die data aangepast worden voor de toegevoegde data; het bereik van draaitabellen moet worden vergroot, formules moeten ook naar de nieuw toegevoegde data gaan verwijzen etc. En alle grafieken of andere vormen van output moeten daar weer op worden aangepast. Vaak hebben financials meerdere modellen onder hun hoede die allemaal weer op meerdere bronnen zijn gebaseerd. Tijdens het verwerken van nieuwe data moeten ze dit dus in meerdere modellen meerdere keren doen. Dat kost, elke maand weer, voor alle teamleden, enorm veel tijd

Foutgevoelig

En zoveel handmatig werk brengt weer een enorm risico op fouten met zich mee. Zoals veel Financials zullen herkennen; ergens één piepklein foutje kan tot een totaal verkeerde uitkomst leiden. En totaal verkeerd is nog geeneens zo’n punt; dat valt wel op. Nee, als door de fout de uitkomst 10% hoger of lager is, dan valt het niet op en gaat er incorrecte informatie worden gebruikt of gecommuniceerd. Verschillende bronnen suggereren dat er in 90% van alle Excel Spreadsheets fouten zitten, en vanuit mijn ervaring geloof ik dat zomaar!

Ongestructureerd

Daarnaast wordt het, na al dat handmatige werk, lastig om te achterhalen wat er met de input is gedaan om tot de output te komen. Als je een model van iemand anders bekijkt, of een model wat je zelf een poos geleden hebt gemaakt, wil je altijd weten waar de brondata in het model is ingevoerd en waar die vandaan komt. Daarnaast wil je weten welke bewerkingen erop zijn uitgevoerd om tot de output te komen. In een Financieel Model in Excel is dat meestal niet te doen. In veel cellen staan “harde waarden” zonder bronvermelding, linkjes naar een ander model waar alleen de beheerder bij kan/mag of niet meer bestaat, berekeningen op basis van cellen in een draaitabel (voorkom dat trouwens in je modellen: een draaitabel ís al output, berekeningen baseer je op de brontabel en nooit op een draaitabel) etc. En documentatie van de meeste modellen is over het algemeen niet/slecht aanwezig of niet bijgewerkt nadat het model is aangepast.

Nadelen van automatiseren mbv VBA

Naast de handmatige werkwijze zie ik ook dat Excel modellen wel zijn geautomatiseerd met de programmeertaal die daarvoor beschikbaar is; Visual Basic for Applications, ofwel VBA. Wat ik daarbij bijna altijd zie is dat iemand met veel passie en toewijding VBA code heeft geschreven die op dat moment en in het model in zijn huidige staat doet wat de bedoeling is. Maar als het model een beetje verandert loopt de code bij het afspelen ervan vast. Of, erger nog, de code speelt wel af maar doet niet wat de bedoeling is. En dan kan er niet op “ongedaan maken” worden geklikt, die functionaliteit in Excel werkt niet na VBA uitgevoerd te hebben. Maar nog veel belangrijker; de VBA code van iemand anders begrijpen is een bijzonder lastige opgave. Zoals ik al heb aangegeven is het in een Excel model vaak lastig te achterhalen wat er nou precies gebeurt. Als er ook nog VBA code is gebruikt wordt dat helemaal een uitdaging.

Het kan beter

De meeste Financials die veel met Excel hebben gewerkt zullen dit beeld herkennen. Wellicht zien ze nog andere nadelen, of zouden ze deze nadelen op een andere manier hebben gecategoriseerd. Maar er zal altijd herkenning zijn. En het kan beter. Véél beter.* Al het werk kan op een eenvoudige manier worden geautomatiseerd. En zodanig dat voor iedereen transparant is hoe de informatiestoom loopt, vanuit de aanlevering, naar de bewerkingen daarop tot aan de output.

* Het model kan veel robuuster worden. De kans op fouten, hoewel nooit naar 0%, kan veel lager worden.* Er kunnen meerdere tabellen worden ingevoerd die allemaal op eenvoudige wijze aan elkaar kunnen worden gekoppeld.

* Tabellen kunnen miljarden rijen bevatten. Met nog steeds goede performance van het model.

* De output kan zodanig op interactieve wijze worden gevisualiseerd dat de gebruiker eenvoudig inzicht kan krijgen in het verhaal wat zich achter de cijfers afspeelt.

Voor alle Financials die worstelen met hun Financiële Modellen in Excel en geïnteresseerd zijn geraakt: neem vooral even contact met me op! Ik denk graag met je mee en met mijn kennis en ervaring is de kans groot dat ik je kan helpen.