MVC does not tell you how small to make the models.
For a spreadsheet, when you find that passing the whole data structure between a View and a Model is too slow, or makes the code too complex, you could make an MVC triad to represent something as small as a single cell.
The model part of the cell could then connect in some appropriate way to a larger business object that represents the entire sheet.
Similarly, the cell views will be embedded in another view to represent a sheet, or a window onto a sheet.
Update
The main aim of MVC is not to improve performance, but to make the code more understandable, and therefore easier to maintain.
If you make an MVC triad for each individual cell, this should be easier to understand and modify than if the triad represents a whole column, or the entire sheet. However, performance may suffer for changes that affect the entire sheet, as you may end up with many small objects sending messages to each other.
One alternative to MVC that you might also want to consider if you want to avoid passing data tobetween Views and from a View object to a Model objectModels is direct manipulation. In direct manipulation, the object the user interacts with is the object that stores the business data (the cell value) and the business rules (how the cell value can change.)