根据图片,我想在我的c#项目中使用excel percentrant函数。解决方案是什么?
答案 0 :(得分:4)
基于this thread:
private static double PercentRank(List<double> matrix, double value)
{
matrix.Sort();
for (int i = 0; i < matrix.Count; i++)
if (matrix[i] == value)
return ((double)i) / (matrix.Count - 1);
// calculate value using linear interpolation
double x1, x2, y1, y2;
for (int i = 0; i < matrix.Count - 1; i++)
{
if (matrix[i] < value && value < matrix[i + 1])
{
x1 = matrix[i];
x2 = matrix[i + 1];
y1 = PercentRank(matrix, x1);
y2 = PercentRank(matrix, x2);
return (((x2 - value) * y1 + (value - x1) * y2)) / (x2 - x1);
}
}
throw new Exception("Out of bounds");
}
答案 1 :(得分:0)
JavaScript中的示例实现(匹配Office docs的结果)。
function percentrank(x, vec) {
var s = 0;
var b = 0;
for (var k = 0; k < vec.length; k++) {
if (vec[k] < x) {
s += 1;
} else {
b += 1;
}
}
return s/(s+b-1);
}
用法:
百分比(2,[13,12,11,8,4,3,2,1,1,1])
答案 2 :(得分:-4)
您可以使用interOp库。但是,如果这应该用于格栅护理,因为如果有漏洞或内存泄漏,它可能最终在desater。这是因为您打电话并创建一个单独的流程来完成您的工作。特别不推荐用于ASP.net。
以下是一篇关于如何做的好文章。