Een berg data

“Zeer overzichtelijk en duidelijk, maar wat een berg data houd je bij”. Dat was onderdeel van de reactie van Chris op de publicatie van mijn administratie-spreadsheet. Het zette me aan het denken (dankjewel Chris!).

Mijn spreadsheets zijn het resultaat (of beter de tussenstand) van bijna 15 jaar actief bezig zijn met mijn financiën. Het is eenvoudig begonnen. En dan krijg je een idee. “Ik wil weten wat…”, en dan ga je dat bouwen. Soms werkt dat niet of levert het niet op wat je hoopt, en dan haal je het weer weg. Maar als het werkt en de informatie oplevert die je hoopt, dan wordt het onderdeel van je systeem. Zo is het logisch dat er inmiddels de nodige functionaliteit in mijn spreadsheet zit. Maar de basis: een globale jaarrekening, het grootboek met de realisatie en budget per grootboekrekening, en de sheet met de afzonderlijke geïmporteerde boekingen, is al bijna 15 jaar hetzelfde.

In 2015, tijdens ons verblijf in het Verre Warme Land, heb ik al mijn spreadsheets van de grond af aan opnieuw opgebouwd. Tot die tijd zat er vrij veel handwerk in. Handmatig importeren van de bestanden die ik download bij de bank. Handmatig boeking voor boeking de juiste grootboekrekening erbij zetten. Ik deed (en doe) het graag, want het geeft me inzicht en rust. Maar bij de Grote Verbouwing werd het uitgangspunt: zo min mogelijk handwerk. Toen zijn de macro’s gekomen. Importeren. Voorcoderen. Maar ook automatisch bepalen tot welke datum de boekingen bijgewerkt zijn.

Dus ja, ik houd een hele berg data bij. Maar het kost me nauwelijks werk. ‘Klik’ downloaden. ‘Klik’ importeren. ‘Klik’ Voorcoderen. Enkele boekingen met de hand coderen. Kopiëren naar de Boekingen sheet. Klaar. Alle berekeningen worden automatisch bijgewerkt. De meeste tijd besteed ik nu aan het bekijken van de Jaarrekening en het Grootboek. Lig ik op schema? Zijn er bijzondere of vreemde dingen? En dat is ook wat ik wil doen, dat is waar het mij om gaat.

Ben ik doorgeschoten in mijn ontwikkeldrift? Ja, best wel een beetje. Een Functie die uitrekent hoeveel dagen er in dit jaar zitten gaat wel ver, dat kun je ook aan het begin van het jaar eenmalig handmatig in dat veld zetten. Maar ach, ik was toch bezig met programmeren. Niet omdat het moet, maar omdat het kan.

Mijn spreadsheet vind je op de Downloads pagina. Hoe ontwikkelen jouw spreadsheets zich?

Confrontatie met mijzelf

Deze week was het weer tijd voor mijn jaarlijkse confrontatie met mijzelf. Geldnerd versus zijn boekhouding. Dat vergt enige uitleg.

Zeker eens per jaar loop ik gedetailleerd door mijn administratie heen. Ik ga dan op zoek naar de Latte Factor (zie hier een goede uitleg van wat dat is). Ik zoek dus naar kleine sluipende reguliere uitgaven, die ongemerkt optellen tot best een behoorlijk bedrag.

Zelf heb ik in elk geval een ‘letterlijke’ Latte Factor, of eigenlijk Cappucino Factor waar ik eerder over geschreven heb. Die mag van mij nog even blijven. Maar wat kwam ik verder zoal tegen?

Allereerst liep er nog een Inboedelverzekering op mijn persoonlijke polis. Die heb ik tijdens het verblijf in het Verre Warme Land gebruikt voor de dekking van mijn opgeslagen spullen. En na terugkeer voor de eigen inboedel in het tijdelijke appartement. Maar nu Vriendin en ik ons nieuwe huis hebben, hebben we daar ook een inboedelverzekering voor die loopt via de gezamenlijke rekening. Ik heb dus snel de verzekeraar gebeld en de Inboedel-component uit mijn persoonlijke polis laten slopen. Dat scheelt dit jaar € 74.

Verder moet ik goed opletten op mijn mobiele abonnement. Want dat loopt later dit jaar af. Het is niet super-gunstig, daar hoort een klein verhaaltje bij. Toen ik vertrok naar het Verre Warme Land wilde ik graag mijn Nederlandse mobiele nummer behouden. In overleg met de provider hebben we dat toen omgezet naar prepaid, en de provider zou ervoor zorgen dat het nummer niet zou vervallen. Als ik dan in Nederland zou zijn kon ik gewoon wat geld bijstorten en het nummer gebruiken. Je raadt het al: de eerste de beste keer dat ik in Nederland kwam bleek mijn oude vertrouwde nummer weg te zijn… Ik heb toen snel een vervangend nummer geregeld om bereikbaar te zijn, en daarbij heb ik niet echt goed onderzoek gedaan naar de beste opties. Dat komt dus later dit jaar wel. Ik heb er een reminder voor in mijn agenda gezet.

Loop jij ook regelmatig even door al jouw uitgaven heen?

Administratie-spreadsheet online

Het is zover. Naar aanleiding van mijn eerdere blog publiceer ik mijn administratie-spreadsheet. Best wel spannend vind ik dat. Het is een versie met grotendeels fictieve data die ik geanonimiseerd heb. Maar het gaat uiteraard niet om de data. Het gaat om de opzet en om de Visual Basic macro’s die eronder liggen. Mijn spreadsheets zijn gebouwd met Microsoft Excel 2013 en werken bij mij probleemloos onder Windows 10.

Ieder jaar op 1 januari start ik met een nieuwe spreadsheet. Het is een jaaradministratie. Maar omdat ik tegenwoordig nauwelijks meer wijzigingen aanbreng in mijn grootboekrekeningschema kan ik de sheets makkelijk naast elkaar zetten om de trends over meerdere jaren te zien.

Mijn sheet ondersteunt het importeren van de bestanden van twee banken, Rabobank en ABN AMRO. Dat zijn de twee banken waar ik momenteel een rekening heb. Van Rabobank download ik het CSV bestand, van ABN het TXT bestand. De knop hiervoor vind je op het werkblad ‘Jaarrekening’. Deze versie werkt alleen correct met de Rabo macro. Beide banken plaatsen het boekingsbedrag namelijk in een verschillende kolom, en dat moet je dus even aanpassen in de kolom op het werkblad ‘Grootboek’ waar de totalen opgeteld worden.

Het eerste werkblad ‘Jaarrekening’ geeft een samenvatting van de inkomsten en uitgaven per categorie, en vergelijkt ze ook met budget. Ook zie je hier de tussenrekening in de 900 (inkomsten) en de 9000 (uitgaven) groep. Als ik bijvoorbeeld geld overboek van mijn lopende rekening naar mijn spaarrekening dan is dat geen uitgave, maar een interne verschuiving. Idem met geld wat ik naar mijn beleggingsrekening boek. Dat zie je dus (onder de inkomsten en uitgaven) apart weergegeven. Overigens kijkt mijn spreadsheet zelf tot welke datum er boekingen zijn ingevoerd, dat zie je hier in het veld ‘Bijgewerkt tot’.

De boekingen worden tijdens het Importeren op een tijdelijk werkblad ‘Data’ gezet. Kopiëren naar het werkblad Boekingen (waar alle boekingen voor een jaar dus onder elkaar komen te staan) doe ik nog handmatig. Ik ben te bang dat er een keer wat misgaat als ik dat automatisch doe, en dat mijn administratie daardoor in de soep draait. Met de knop ‘Verwijder Datasheet’ gooi ik het tijdelijke werkblad weer weg als de gegevens correct gekopieerd zijn.

De knop ‘Voorcoderen’ activeert een macro die kijkt naar een aantal kenmerken van de boeking. Voorcoderen werkt op de gegevens op het tijdelijke werkblad ‘Data’. De gegevens waarmee de macro vergelijkt staan op hebt werkblad ‘Voorcoderen’. Als de kenmerken overeen komen dan krijgt de boeking op het werkblad ‘Data’ de grootboekrekening toegewezen die op het werkblad ‘Voorcoderen’ bij de boeking staat. Boekingen die de macro niet herkent moet je handmatig voorzien van een grootboekrekeningnummer. Maar op deze manier wordt gemiddeld ruim 80% van mijn uitgaven automatisch aan de juiste grootboekrekening gekoppeld.

Op het werkblad ‘Grootboek’ zie je de uitgaven per grootboekrekening bij elkaar opgeteld. Hier kun je per rekening ook een budget ingeven. Op basis daarvan (en van de datum tot waar de boekingen zijn bijgewerkt) berekent de spreadsheet hoeveel budget er YTD (Year To Date – tot op dit punt in het jaar) beschikbaar was. Ik werk alleen met jaarbudgetten, niet met maandbudgetten.

Op het werkblad ‘Creditcard’ houd ik gedurende de maand mijn creditcard-uitgaven bij. Zodra de creditcard wordt afgeschreven signaleert mijn spreadsheet dat tijdens het Voorcoderen (melding ‘Er is een credit-card boeking’). Als ik die krijg dan druk ik op de knop ‘Creditcard Verwerken’ op het werkblad ‘Jaarrekening’. De macro zoekt dan de juiste creditcarduitgaven erbij en zet die onder de boekingen op het werkblad ‘Data’. Hij doet dat van boven naar beneden vanaf het werkblad ‘Creditcard’ en stopt zodra het juiste totaalbedrag van de creditcardboeking bereikt is. De creditcardboeking zelf krijgt als grootboekrekeningnummer nul (‘0’), zodat die ook niet meetelt in de uitgaven. Het zijn immers de afzonderlijke betalingen die belangrijk zijn voor het totaalbeeld.

Tenslotte vind je op het werkblad ‘Jaarrekening’ nog de knop ‘Kashbook importeren’. Voor het bijhouden van mijn uitgaven in contant geld (dat zijn er steeds minder) gebruik ik de app ‘Kashbook’ op mijn smartphone. Vanuit Kashbook kun je alle boekingen in CSV format aan jezelf sturen. Die importeer ik en ze worden dan verwerkt op de juiste grootboekrekening, ook weer op een tijdelijk werkblad ‘Data’. Vandaar kun je ze ook weer zelf kopiëren naar het werkblad ‘Boekingen’.

Alle te importeren bestanden lees ik in vanuit mijn ‘Downloads’ directory, die je in kunt stellen op het tabblad ‘Handleiding’. Ook kun je hier instellen in welke directory de importbestanden na verwerking opgeslagen moeten worden, en ook moet je hier de volledige naam van de administratie opgeven. Dat wordt gebruikt in onder andere de import-macro’s.

Met het contant geld, de creditcard-uitgaven en alle boekingen en pinbetalingen vanaf mijn bankrekening heb ik een compleet beeld van al mijn inkomsten en uitgaven.

Hier ga je naar de downloadpagina.

Over een tijdje publiceer ik ook mijn beleggingsadministratie. Die is ietsje ingewikkelder dan deze. Ik hoop vooral dat andere mensen ook hun spreadsheets en macro’s online gaan zetten. Want ik wil graag ook leren van anderen!

Wat vind je van mijn spreadsheet?

Gedachteloos

201610-geld-brandIn mijn vorige leven gaf ik gedachteloos geld uit. Aan abonnementen waar ik vervolgens niks mee deed. Aan iedere week uit eten, soms zelfs meerdere keren per week. Aan spullen. Op een gegeven moment dacht ik: waar gaat het geld heen? Of eigenlijk was het Ex die dat als eerste dacht. Die vraag hebben we eerst nog een jaartje laten liggen. Want het kon. We spaarden niet veel, maar we kwamen ook niet tekort. Maar met het denken begon het knagen. En uiteindelijk zijn we ervoor gaan zitten. Gewoon alle bankboekingen van het jaar downloaden (dat kan volgens mij bij elke bank standaard in de internetbankieren-omgeving) en in een spreadsheet zetten. En dan bij iedere boeking een cijfertje zetten, en met behulp van SOM.ALS weet je wat je in elke categorie uitgeeft. Het kost je die eerste keer een paar uurtjes, maximaal.

En nu kan ik het gewoon niet meer, gedachteloos geld uitgeven. Eén van de eerste (en nog steeds, in mijn ogen, één van de beste) boeken over persoonlijke financiën die ik heb gelezen was ‘Your Money or Your Life’. Ik heb niet de hele methodiek toegepast, maar wel het stuk waar je uitrekent wat je écht per uur verdient. En ongemerkt ga je dan toch iedere uitgave uitdrukken in aantal uren werk. Ik tenminste wel. Bij mij was dit erg effectief.

De afgelopen periode moest ik twee keer terugdenken aan deze episode:

  • Ten eerste toen ik bij Zuinigaan las over haar ‘mega-uitgaven-periode’. Niet gedachteloos, maar goed doordacht investeren. En weten dat het kan, dat je er geen lening voor nodig hebt en dat je er niet door in de problemen zult komen.
  • De tweede keer was bij de Bloggers Meet-Up. Eén van de gesprekspunten was hoe je begonnen bent. Want ja, hoe begin je eraan?

Nou, heel simpel. Gewoon doen. Er zijn altijd redenen om het niet te doen. Maar je kunt ook gewoon beginnen. Ik weet ze nog, die eerste categorieën. Ik heb de spreadsheet nog. Zojuist ben ik er nog weer eens doorheen gegaan. Inmiddels bestaat mijn administratie uit een rekeningschema met 120 grootboekrekeningen. Die mij gedetailleerd inzicht geven in mijn inkomsten en uitgaven. Iedere week, met 1 druk op de knop. Maar uiteindelijk gaat het niet om het aantal grootboekrekeningen en die macro’s. Bewustzijn is de sleutel.

Hoe blijf jij je bewust van je inkomsten en je uitgaven?

HTTPS en Blogroll

Grote veranderingen onder de motorkap hier op Geldnerd. Deze week heb ik een SSL certificaat geïnstalleerd. Je ziet dat bovenaan in de adresbalk, daar staat nu het bekende slotje met de tekst ‘veilig’. De CIA, NSA, AIVD, en alle andere geheime diensten kunnen dus als het goed is niet meer meekijken als je hier je wekelijkse dosis financieel-nerdy blogvoer leest.

Ik moet er voor de korte termijn wel een offer voor brengen. De Blogroll plugin die ik gebruikte is al jaren niet meer bijgewerkt, en bleek niet veilig te zijn. Die heb ik dus weggehaald. Voorlopig staat er dus alleen een lijstje met de blogs die ik volg.

Op zoek dus naar een nieuwere plugin. Liefst eentje die ik als Widget aan de zijkant kan zetten, en die ook de titel van de meest recente blogpost weer kan geven en hoe lang geleden die gepubliceerd is. Een eerste zoektocht in de WordPress Plugin bibliotheek heeft helaas nog geen resultaat opgeleverd.

Iemand nog tips?

Tussendoor-spreadsheet-klooi-blogje

Het was weer eens zover. Eens in de zoveel tijd erger ik me aan mijn beleggingsspreadsheet. Dan duren de verwerkingen van mijn weekrapportjes weer te lang, of doet ‘ie er weer te lang naar mijn zin over om mijn rapportages te laten zien op het scherm. En je kunt wel ieder half jaar een nieuwe laptop met snellere processor en nog meer geheugen kopen, maar dat lost het vaak ook niet op.

Dus eens in de zoveel tijd ga ik weer op zoek naar manieren om mijn macro-code te optimaliseren. Zo ook vandaag.

Allereerst ben ik ervoor gaan zorgen dat de belangrijkste macro’s ongestoord kunnen draaien. Dat zijn de macro’s voor het Importeren en Verwerken van de wekelijkse koersrapporten, voor het bijwerken van mijn Rapportages (voor de liefhebbers: Pivot-tabel) en voor het bijwerken van de Grafieken. Mijn spreadsheet zit vol met functies die zichzelf bijwerken als er iets verandert. En dat vertraagt natuurlijk enorm als ze dat ook doen tijdens de bovengenoemde verwerkingen. Goede tips vond ik hier en met name ook hier.  Die laatste oplossing heb ik vrijwel één-op-één overgenomen.

Aan het begin van mijn code heb ik dus drie variabelen toegevoegd die voor mijn hele spreadsheet gelden.

Public CalcState As Long 
Public EventState As Boolean 
Public PageBreakState As Boolean

Verder heb ik de twee subroutines toegevoegd:

Sub OptimaliseerCode_Begin()

Application.ScreenUpdating = False
EventState = Application.EnableEvents
Application.EnableEvents = False
CalcState = Application.Calculation
Application.Calculation = xlCalculationManual
PageBreakState = ActiveSheet.DisplayPageBreaks
ActiveSheet.DisplayPageBreaks = False

End Sub

En aan het eind moet je dat natuurlijk weer ongedaan maken.

Sub OptimaliseerCode_End() 

ActiveSheet.DisplayPageBreaks = PageBreakState 
Application.Calculation = CalcState 
Application.EnableEvents = EventState 
Application.ScreenUpdating = True 

End Sub

Vervolgens moet ik die code natuurlijk aanroepen in mijn eigen macro’s. Dat doe ik op de volgende manier in elk macro en elke functie die van toepassing is:

'Optimaliseer Code 
Call OptimaliseerCode_Begin 

'Hier staat dan mijn eigen code... 

'Optimaliseer Code 
Call OptimaliseerCode_End

En kijk mij eens een mooie plugin hebben om die code professioneel te publiceren! In de eerste test werden de macro’s voor importeren en verwerken ongeveer vier keer zo snel door deze ingreep. En ook bij het actualiseren van mijn weekrapportage en mijn grafieken was er een behoorlijke sneheidswinst. De nerd in mij is weer dolgelukkig.

Ik ga nog even apart kijken naar de code voor de Pivot. En voor de import overweeg ik om te schakelen van ‘veld voor veld inlezen’ naar ‘in één keer inlezen in een array, en in één keer wegschrijven in een sheet’. Ik lees op diverse plekken dat dat ook veel snelheidswinst op kan leveren. Maar dat is een wat ingrijpender operatie, daar kom ik nog wel op terug.

Ben ik weer te nerdy?

Einde van de inhoud

Geen pagina's meer om te laden