コード例 #1
0
        private static ValueEval eval(double arg0, RefListEval aeRange, bool descending_order)
        {
            int rank = 1;

            List <int> replaceList = new List <int>();

            for (int i = 0; i < aeRange.GetList().Count; i++)
            {
                ValueEval ve = aeRange.GetList()[i];
                if (ve is RefEval)
                {
                    {
                        replaceList.Add(i);
                    }
                }
                foreach (var index in replaceList)
                {
                    ValueEval targetVe = aeRange.GetList()[i];
                    aeRange.GetList()[index] = ((RefEval)targetVe).GetInnerValueEval(((RefEval)ve).FirstSheetIndex);
                }
                Double value;
                if (ve is NumberEval)
                {
                    value = ((NumberEval)ve).NumberValue;
                }
                else
                {
                    continue;
                }

                if (descending_order && value > arg0 || !descending_order && value < arg0)
                {
                    rank++;
                }
            }

            return(new NumberEval(rank));
        }
コード例 #2
0
 public ValueEval Evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex)
 {
     if (args.Length == 0)
     {
         return(ErrorEval.VALUE_INVALID);
     }
     try
     {
         ValueEval valueEval = args[0];
         int       result    = 1;
         if (valueEval is RefListEval)
         {
             RefListEval refListEval = (RefListEval)valueEval;
             result = refListEval.GetList().Count;
         }
         NumberEval numberEval = new NumberEval(new NumberPtg(result));
         return(numberEval);
     }
     catch (Exception e)
     {
         return(ErrorEval.VALUE_INVALID);
     }
 }