【发布时间】:2011-10-24 21:17:00
【问题描述】:
我正在尝试使用 percentile 函数计算 VBA 中数组 (arr1) 中包含 100000 个值的数据集的 99.5% 百分位数,如下所示:
Pctile = Application.WorksheetFunction.Percentile(arr1, 0.995)
Pctile = Application.WorksheetFunction.Percentile_Inc(arr1, 0.995)
两者都不起作用,而且我不断收到类型不匹配 (13)。
如果我将数组大小限制为最大 65536,则代码运行良好。据我所知,calculation limited by available memory 自 Excel 2007 以来 array sizes when passing to macro limited by available memory 自 Excel 2000 以来。
我在高性能服务器上使用 Excel 2010。任何人都可以确认这个问题存在吗?假设是这样,我认为我的选择是构建一个 vba 函数来“手动”计算百分位数或输出到工作表,在那里计算并读回。是否有任何替代方案,最快的方法是什么?
【问题讨论】:
-
我可以确认“问题”。即使在 Excel 2007/2010 中,从 UDF 返回数组时也存在数组大小限制。我也没有任何其他链接给你,所以这只是一个评论。最后,我在您发布的链接中看不到任何暗示数组大小限制对于来自 UDF 的返回值 受“可用内存”限制的内容。
-
我在处理大数据时也有类型转换错误
标签: vba excel excel-2010