summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--calc.go7
-rw-r--r--calc_test.go7
2 files changed, 11 insertions, 3 deletions
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",