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)); }
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); } }