From e13e1ae22e8570334f550c7f17b8e8f98f83d010 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Wed, 28 Oct 2015 22:30:24 +0100 Subject: 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 Reviewed-by: Norbert Thiebaud (cherry picked from commit 956782b87d1c4a59159f9ec485f80909c19b397e) --- sc/source/core/tool/interpr4.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; -- cgit v1.2.3