summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-10-28 22:30:24 +0100
committerAndras Timar <andras.timar@collabora.com>2015-11-03 18:10:25 +0100
commite13e1ae22e8570334f550c7f17b8e8f98f83d010 (patch)
treeb91f14dc3433d03a1f77af9f6fec602b01c1a363
parente3dc11d4fdcb08649f2dfb0e9e60fbe1e2525d55 (diff)
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/19659 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> (cherry picked from commit 956782b87d1c4a59159f9ec485f80909c19b397e)
-rw-r--r--sc/source/core/tool/interpr4.cxx8
1 files changed, 7 insertions, 1 deletions
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index 43a22c9181bc..4327d610e194 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -1399,7 +1399,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;