@@ -1025,24 +1025,25 @@ public override void ToString(StringBuilder stringBuilder, bool addBrackets)
10251025
10261026 #region Lookup
10271027
1028- internal class Function_VLOOKUP : Function_N
1028+ internal class Function_VLOOKUP : Function_4
10291029 {
1030- public Function_VLOOKUP ( FunctionBase [ ] funcs ) : base ( funcs )
1030+ public Function_VLOOKUP ( FunctionBase func1 , FunctionBase func2 , FunctionBase func3 , FunctionBase func4 ) : base ( func1 , func2 , func3 , func4 )
10311031 {
10321032 }
10331033
10341034 public override Operand Calculate ( AlgorithmEngine work )
10351035 {
1036- var args = new List < Operand > ( ) ;
1037- foreach ( var item in funcs ) { var aa = item . Calculate ( work ) ; if ( aa . IsError ) { return aa ; } args . Add ( aa ) ; }
1036+ var args1 = func1 . Calculate ( work ) ;
1037+ args1 = args1 . ToArray ( "Function '{0}' parameter {1} is error!" , "VLOOKUP" , 1 ) ; if ( args1 . IsError ) { return args1 ; }
10381038
1039- var args1 = args [ 0 ] . ToArray ( "Function '{0}' parameter {1} is error!" , "VLOOKUP" , 1 ) ; if ( args1 . IsError ) { return args1 ; }
1040- var args2 = args [ 1 ] ;
1041- var args3 = args [ 2 ] . ToNumber ( "Function '{0}' parameter {1} is error!" , "VLOOKUP" , 3 ) ; if ( args3 . IsError ) { return args3 ; }
1039+ var args2 = func2 . Calculate ( work ) ; if ( args2 . IsError ) { return args2 ; }
1040+ var args3 = func3 . Calculate ( work ) ;
1041+ args3 = args3 . ToNumber ( "Function '{0}' parameter {1} is error!" , "VLOOKUP" , 3 ) ; if ( args3 . IsError ) { return args3 ; }
10421042
10431043 var vague = true ;
1044- if ( args . Count == 4 ) {
1045- var args4 = args [ 3 ] . ToBoolean ( "Function '{0}' parameter {1} is error!" , "VLOOKUP" , 4 ) ; if ( args4 . IsError ) { return args4 ; }
1044+ if ( func4 != null ) {
1045+ var args4 = func4 . Calculate ( work ) ;
1046+ args4 = args4 . ToBoolean ( "Function '{0}' parameter {1} is error!" , "VLOOKUP" , 4 ) ; if ( args4 . IsError ) { return args4 ; }
10461047 vague = args4 . BooleanValue ;
10471048 }
10481049 if ( args2 . Type != OperandType . NULL ) {
@@ -1075,8 +1076,7 @@ public override Operand Calculate(AlgorithmEngine work)
10751076 }
10761077 }
10771078
1078- if ( vague ) //进行模糊匹配
1079- {
1079+ if ( vague ) { //进行模糊匹配
10801080 Operand last = null ;
10811081 var index = args3 . IntValue - work . ExcelIndex ;
10821082 foreach ( var item in args1 . ArrayValue ) {
0 commit comments