It is easy to make positioning errors when moving to
spreadsheet cells.
Alphanumeric cell names are not easy to remember. Named variables,
like in programming languages, would be better.
Spreadsheets do not check for cells that are used but never set,
or set but never used.
Spreadsheets do not check for dimensional errors, such as
multiplying money by money, or adding money to interest rates.
There is nowhere to put large amounts of program
documentation. Contrast with programming languages, which have
comment statements.
To reuse code, you need to cut and paste to move it from one
sheet to another. Tedious, error-prone, you may forget to change
absolute cell references.
The structure of large models is not obvious. Some models
are very big: Personal Computer World May 1995 cites
an oil business model with 80 linked worksheets totalling
120 MB.
Spreadsheets are easy to start with. They tempt users to
build ever bigger and bigger models, but don't provide the
structuring tools these models need.
It is common practice to generate spreadsheets by Visual
Basic programs. To understand such models, you need to read a
program that generates another program. This is not easy.