Resolves: tdf#95395 force range reference to array only in array formula, also tdf#95419
... and not already if the function has a (ReferenceOr)ForceArray type
parameter somewhere else in the parameter list.
Regression triggered by commit 01eea7fe40c939311bf1920b6e8b4391a93c2e82
for MATCH, HLOOKUP and VLOOKUP first parameter, but behavior already
present since OOo for LOOKUP; FORECAST in its first parameter, PROB,
LINEST, LOGEST and TTEST in the last two parameters.
Change-Id: I4a30ea3362f86274a048b0e3f47fa12da3001a3a
(cherry picked from commit b5cd11b4b02a85a83db77ba9d8d1763f0cd88cb1)
Reviewed-on: https://gerrit.libreoffice.org/19660
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index f4158f0..6ebeed7 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -1655,7 +1655,13 @@ bool ScInterpreter::ConvertMatrixParameters()
ScParameterClassification::Type eType =
ScParameterClassification::GetParameterType( pCur, nParams - i);
if ( eType != ScParameterClassification::Reference &&
eType != ScParameterClassification::ReferenceOrForceArray)
eType != ScParameterClassification::ReferenceOrForceArray &&
// For scalar Value: convert to Array/JumpMatrix
// only if in array formula context, else (function
// has ForceArray or ReferenceOrForceArray
// parameter *somewhere else*) pick a normal
// position dependent implicit intersection later.
(eType != ScParameterClassification::Value || bMatrixFormula))
{
SCCOL nCol1, nCol2;
SCROW nRow1, nRow2;