From 61d0ed1ff26fbe47b4bfdc6adbc6db09743beb3a Mon Sep 17 00:00:00 2001 From: bailantaotao Date: Thu, 12 Aug 2021 14:53:59 +0800 Subject: This closes #987: support nested calc for if formula (#988) --- calc.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'calc.go') diff --git a/calc.go b/calc.go index 18605db..cd7fa97 100644 --- a/calc.go +++ b/calc.go @@ -6746,7 +6746,7 @@ func (fn *formulaFuncs) IF(argsList *list.List) formulaArg { var ( cond bool err error - result string + result formulaArg ) switch token.Type { case ArgString: @@ -6757,13 +6757,26 @@ func (fn *formulaFuncs) IF(argsList *list.List) formulaArg { return newBoolFormulaArg(cond) } if cond { - return newStringFormulaArg(argsList.Front().Next().Value.(formulaArg).String) + value := argsList.Front().Next().Value.(formulaArg) + switch value.Type { + case ArgNumber: + result = value.ToNumber() + default: + result = newStringFormulaArg(value.String) + } + return result } if argsList.Len() == 3 { - result = argsList.Back().Value.(formulaArg).String + value := argsList.Back().Value.(formulaArg) + switch value.Type { + case ArgNumber: + result = value.ToNumber() + default: + result = newStringFormulaArg(value.String) + } } } - return newStringFormulaArg(result) + return result } // Lookup and Reference Functions -- cgit v1.2.1