Indeed. It’s also only cheap until you find a company that was entirely powered by sticky tape and string in excel and the resident excel expert rides his motorbike into the back of a truck.
I have been the clean up guy there. Reverse engineering it is worse than reverse engineering Perl. Been that guy too.
I'd still prefer that to reverse engineering an APL program. Been there, done that. In the end, I did a clean room reverse engineering, which was way simpler.
They can be, but often aren't. I basically make spreadsheets for a living, and actively try to do a good job of documenting how it works. Among other things that can help:
Adding comments in VBA. Why nobody does this is beyond me, but I've fixed dozens of spreadsheets with no comments.
Using named ranged and tables (not just plopping data in). Named ranges make formulas beautiful (=balance * interest rather than =B17 * F14). Tables help with formulas and make VBA accessing data much nicer.
Using cell styles to clue people in about functionality. The orange "input" style is an instant clue-in for people who know my spreadsheets. If they are scared of breaking things, those are the safe cells.
Using the "explanatory text" style next to inputs or to add notes throughout.
Organizing things in a cohesive manner. Often developers define their variables at the top of a function or sub rather than mixing them in throughout. That same amount of forethought can make spreadsheets much easier to follow.
Compared to other programming languages, it’s certainly not cheap! In comparison to numerical analysis tools, maybe…