Fix the problem of multi arguments calculation (#1253)

This commit is contained in:
ww1516123 2022-06-14 15:04:43 +08:00 committed by GitHub
parent d490a0f86f
commit 7f570c74f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View File

@ -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
}

View File

@ -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",