Re:  Recalculate and Recalculate Hard in Calc

Mike Kaganski mikekaganski at hotmail.com
Tue Jun 9 06:53:47 UTC 2020


Hi,

On 08.06.2020 13:01, Steve Fanning wrote:
> I’m having a problem understanding the Help information for these
> functions (search for “recalculate” in the Help index).
> 
> The Help seems to state that choosing Data > Calculate > Recalculate (or
> its equivalent shortcut F9) “recalculates the currently selected cells
> and formula cells that depend on them”. Whatever I try in Calc, these
> interactions affect lots of cells, not just those currently selected.
> 
> In an empty spreadsheet, try the following:
> (a) Set Data > Calculate > AutoCalculate to off.
> (b) Type =a1+1 into cell a2.
> (c) Type the value 1 into cell a1.
> (d) Type =e5+1 into cell e6.
> (e) Type the value 1 into cell e5.
> (f) Select cells e5 and e6.
> (g) Choose Data > Calculate > Recalculate or press F9.
> When I do this, the value in the unselected cell a2 is updated.
> 
> Is the Help inaccurate or am I muddled?
> 
> And, if my example above is valid, what does Recalculate Hard do that
> Recalculate doesn’t?

FTR: the code for Recalculate (F9) is ScDocShell::DoRecalc; for
Recalculate Hard (Ctrl+Shift+F9) is ScDocShell::DoHardRecalc.

The former first sets current cell "dirty", then calls
ScDocument::CalcFormulaTree (that recalcs *all* *dirty* cells in the
document) and ScDBFunc::UpdateCharts (to make sure the changes get into
charts).

Thus, if the document contains many dirty cells (as working in disabled
AutoCalculate mode), F9 would make sure that currently selected cell is
dirty (to make sure it recalcs), but then will recalc not only it, but
all other dirty cells. But called next time in the same mode, only
current cell plus cells made dirty after last recalc will update (not
all formulas, which might be many thousands).

ScDocShell::DoHardRecalc calls ScDocument::CalcAll (that recalcs *all*
formula cells, not only dirty ones), then ScDocFunc::DetectiveRefresh,
then ScDBFunc::UpdateCharts.

Thus Ctrl+Shift+F9 will take much longer than F9 in documents where most
cells are up-to-date.

HTH.

-- 
Best regards,
Mike Kaganski
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pEpkey.asc
Type: application/pgp-keys
Size: 1769 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/libreoffice/attachments/20200609/6c96f6f4/attachment.key>


More information about the LibreOffice mailing list