Ejemplo n.º 1
0
 private ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval lookupEval, ValueEval indexEval,
                            LookupUtils.MatchMode matchMode, LookupUtils.SearchMode searchMode)
 {
     try
     {
         ValueEval   lookupValue = OperandResolver.GetSingleValue(lookupEval, srcRowIndex, srcColumnIndex);
         TwoDEval    tableArray  = LookupUtils.ResolveTableArrayArg(indexEval);
         ValueVector vector;
         if (tableArray.IsColumn)
         {
             vector = LookupUtils.CreateColumnVector(tableArray, 0);
         }
         else
         {
             vector = LookupUtils.CreateRowVector(tableArray, 0);
         }
         int matchedIdx = LookupUtils.XlookupIndexOfValue(lookupValue, vector, matchMode, searchMode);
         return(new NumberEval((double)matchedIdx + 1));
     }
     catch (EvaluationException e)
     {
         return(e.GetErrorEval());
     }
 }