Resolves: tdf#157797 Let GetCellValue() propagate previous error, if any

Change-Id: I27ee8d19e4f45bef81e133c82ac17b825790208f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158064
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit aa2632885d8b169016ce8f888cc04796544213b0)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158040
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index 45ae430..2907218 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -180,7 +180,9 @@ double ScInterpreter::GetCellValue( const ScAddress& rPos, ScRefCellValue& rCell
    FormulaError nErr = nGlobalError;
    nGlobalError = FormulaError::NONE;
    double nVal = GetCellValueOrZero(rPos, rCell);
    if ( nGlobalError == FormulaError::NONE || nGlobalError == FormulaError::CellNoValue )
    // Propagate previous error, if any; nGlobalError==CellNoValue is not an
    // error here, preserve previous error or non-error.
    if (nErr != FormulaError::NONE || nGlobalError == FormulaError::CellNoValue)
        nGlobalError = nErr;
    return nVal;
}