From 129052ae7db0fd2c59b1ea9158df0e75450cad42 Mon Sep 17 00:00:00 2001 From: xuri Date: Fri, 4 Mar 2022 00:44:50 +0800 Subject: This closes #1164, fix nested formula calculation result error --- calc.go | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'calc.go') diff --git a/calc.go b/calc.go index ab205ce..c3b8bf9 100644 --- a/calc.go +++ b/calc.go @@ -809,6 +809,17 @@ func (f *File) evalInfixExp(sheet, cell string, tokens []efp.Token) (efp.Token, } } + if isEndParenthesesToken(token) && isBeginParenthesesToken(opftStack.Peek().(efp.Token)) { + if arg := argsStack.Peek().(*list.List).Back(); arg != nil { + opfdStack.Push(efp.Token{ + TType: efp.TokenTypeOperand, + TSubType: efp.TokenSubTypeNumber, + TValue: arg.Value.(formulaArg).Value(), + }) + argsStack.Peek().(*list.List).Remove(arg) + } + } + // check current token is opft if err = f.parseToken(sheet, token, opfdStack, opftStack); err != nil { return efp.Token{}, err -- cgit v1.2.1