forked from p30928647/excelize
Fix the problem of multi arguments calculation (#1253)
This commit is contained in:
parent
d490a0f86f
commit
7f570c74f8
7
calc.go
7
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
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue