diff options
author | Eike Rathke <erack@redhat.com> | 2021-11-26 18:11:31 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2021-11-26 21:40:10 +0100 |
commit | 324e5c3942870749fae0e62c1c11a1400b772584 (patch) | |
tree | 6448132a754cbf8259302d1d607707b4a89e8150 | |
parent | 93663a64e1a436eddcbaefd4bb0a8f83a925cdb4 (diff) |
Regression Statistics: use cell reference, not fix row to calculate offset
The INDEX() offset was calculated with a fix row number derived
from the initial output position, like 35-ROW(). That fails if the
range later is moved or rows inserted/deleted.
Instead, use a cell reference of the cell's current column and
end row, like ROW($A$34)+1-ROW(). 34+1 to not have things shifted
if a row is inserted before 35.
Change-Id: I11276c4acb35505576daa1a20ad49a4fcdbaba49
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125914
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
-rw-r--r-- | sc/source/ui/StatisticsDialogs/RegressionDialog.cxx | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sc/source/ui/StatisticsDialogs/RegressionDialog.cxx b/sc/source/ui/StatisticsDialogs/RegressionDialog.cxx index fb4342444e95..ad4adb1fe238 100644 --- a/sc/source/ui/StatisticsDialogs/RegressionDialog.cxx +++ b/sc/source/ui/StatisticsDialogs/RegressionDialog.cxx @@ -513,7 +513,12 @@ void ScRegressionDialog::WriteRegressionEstimatesWithCI(AddressWalkerWriter& rOu bool bTakeLogX) { rOutput.newLine(); - SCROW nLastRow = rOutput.current(0, 1 + mnNumIndependentVars).Row(); + ScAddress aEnd( rOutput.current(0, 1 + mnNumIndependentVars)); + ScRefFlags eAddrFlag = mbUse3DAddresses ? ScRefFlags::ADDR_ABS_3D : ScRefFlags::ADDR_ABS; + aEnd.IncCol(); + const OUString aCoeffAddr( aEnd.Format( eAddrFlag, &mDocument, mDocument.GetAddressConvention())); + aEnd.IncCol(); + const OUString aStErrAddr( aEnd.Format( eAddrFlag, &mDocument, mDocument.GetAddressConvention())); // Coefficients & Std.Errors ranges (column vectors) in this table (yet to populate). rTemplate.autoReplaceRange("%COEFFICIENTS_RANGE%", @@ -553,9 +558,9 @@ void ScRegressionDialog::WriteRegressionEstimatesWithCI(AddressWalkerWriter& rOu { "", // This puts the coefficients in the reverse order compared to that in LINEST output. - "=INDEX(%COEFFICIENTS_REV_RANGE%; 1 ; " + OUString::number(nLastRow + 2) + " - ROW())", + "=INDEX(%COEFFICIENTS_REV_RANGE%; 1 ; ROW(" + aCoeffAddr + ")+1 - ROW())", // This puts the standard errors in the reverse order compared to that in LINEST output. - "=INDEX(%SERRORSX_REV_RANGE%; 1 ; " + OUString::number(nLastRow + 2) + " - ROW())", + "=INDEX(%SERRORSX_REV_RANGE%; 1 ; ROW(" + aStErrAddr + ")+1 - ROW())", // t-Statistic "=%COEFFICIENTS_RANGE% / %SERRORSX_RANGE%", // p-Value |