The month-end close used to eat an afternoon. Now it’s a button.
For about three years, the last working day of every month looked the same. It took three to five hours and required no thought whatsoever. Here is how that stopped.
For about three years, the last working day of every month looked the same. I’d open the ledger export, open the summary workbook, and start copying figures between them. Category by category. Month column by month column.
It took somewhere between three and five hours depending on how many corrections had come in late. It required no thought whatsoever. And I got it wrong perhaps twice a year — never catastrophically, always annoyingly, always discovered by someone else.
I want to describe how that stopped, because the useful part isn’t the code.
I couldn’t write the code
That’s the first thing worth saying plainly. I do the books at a manufacturing company. I am not a developer. I had opened the VBA editor in Excel exactly once, seen a wall of grey, and closed it.
What changed was that I stopped trying to learn VBA and started describing the task instead.
I wrote out, in ordinary English, what I did by hand: open this sheet, find rows where this column matches this category, sum the amount column, write the total into the summary sheet in the column matching that month. Then repeat for every category.
The AI wrote the macro. It ran. It was wrong.
Being wrong was the useful part
The first version summed everything twice — it was matching the header row as if it were data. I pasted the wrong output back and said what I expected instead. Fixed.
The second version handled the vehicle maintenance category incorrectly, because in our ledger that isn’t one entity, it’s about fifteen, all beginning with the same prefix and ending in a plate number. I hadn’t mentioned that. It’s the kind of thing you don’t think to mention because you’ve internalised it. Once I explained, the fix was a wildcard match on the first nineteen characters.
The third problem was mine entirely. I’d been running the macro on a copied sheet, and the formulas were still pointing at the previous month’s file. The macro was working perfectly on the wrong data.
That took four evenings, in maybe forty-minute stretches after dinner. Call it three hours total. It replaced roughly forty hours a year.
What I actually learned
The bottleneck was never the code. It was that I couldn’t describe my own process precisely. I’d been doing month-end for three years and still hadn’t noticed that the vehicle categories worked differently from everything else — because when you do it by hand, you just handle it, without registering that you’re handling it. Writing the instruction down forced me to look at what I’d actually been doing.
Error messages are the fastest route in. Every time something failed, I pasted the exact error and said what I’d expected. That loop — try, fail, describe, fix — taught me more about how the workbook was structured than three years of using it had.
Automate the boring thing, not the hard thing. I didn’t try to automate anything requiring judgment. Nothing here decides how something should be classified. It copies numbers that were already decided, into cells that were already defined. That’s the correct scope. The moment a task needs judgment, I want a person on it, and that person is me.
The part I’d do differently
I should have tested on a copy from the start. I didn’t, and on the second evening I overwrote a summary sheet and had to rebuild forty minutes of work. Nothing was lost that mattered. It was still avoidable and entirely my own fault.
I’d also write the description down before opening anything. My first attempt was me typing a vague request, getting vague code, and going in circles. The version that worked started with me writing seven numbered steps in a notepad.
Month-end now takes about ninety seconds and one click. I still check the output — every time, without exception, because a macro that’s confidently wrong is worse than a person who’s occasionally wrong. But I check it in five minutes instead of producing it in five hours.
