diff --git a/calc.go b/calc.go index a485a61..7e89502 100644 --- a/calc.go +++ b/calc.go @@ -899,6 +899,13 @@ func (f *File) evalInfixExp(sheet, cell string, tokens []efp.Token) (formulaArg, if result.Type == ArgUnknown { return newEmptyFormulaArg(), errors.New(formulaErrorVALUE) } + // when thisToken is Range and nextToken is Argument and opfdStack not Empty, should push value to opfdStack and continue. + if nextToken.TType == efp.TokenTypeArgument { + if !opfdStack.Empty() { + opfdStack.Push(result) + continue + } + } argsStack.Peek().(*list.List).PushBack(result) continue } diff --git a/calc_test.go b/calc_test.go index 714211d..d5c263e 100644 --- a/calc_test.go +++ b/calc_test.go @@ -1399,9 +1399,10 @@ func TestCalcCellValue(t *testing.T) { // FALSE "=FALSE()": "FALSE", // IFERROR - "=IFERROR(1/2,0)": "0.5", - "=IFERROR(ISERROR(),0)": "0", - "=IFERROR(1/0,0)": "0", + "=IFERROR(1/2,0)": "0.5", + "=IFERROR(ISERROR(),0)": "0", + "=IFERROR(1/0,0)": "0", + "=IFERROR(B2/MROUND(A2,1),0)": "2.5", // IFNA "=IFNA(1,\"not found\")": "1", "=IFNA(NA(),\"not found\")": "not found",