WorksheetFunction数组大小限制

我正在尝试使用百分位数函数计算VBA内数组(arr1)中100000个数据集的99.5%百分位数,如下所示:

Pctile = Application.WorksheetFunction.Percentile(arr1, 0.995) Pctile = Application.WorksheetFunction.Percentile_Inc(arr1, 0.995) 

两者都不起作用,我不断得到types不匹配(13)。

如果我将数组大小限制为最大值65536,那么代码运行良好。据我所知,由于自从Excel 2000以来,由于Excel 2007 arrays大小在传递给macros时受限于可用内存 ,因此计算受到可用内存的 限制 。

我在高性能服务器上使用Excel 2010。 任何人都可以确认存在这个问题 假设是这样,我认为我的select是build立一个vba函数来计算百分位数“手动”或输出到工作表,在那里计算并读回。 有没有其他的select,什么是最快的?

这是一个模仿Excel Percentile函数的Classic VBA示例。

百分位和置信度(Excel-VBA)

鉴于Jean对直接插入法的曝光效率低下。 我用下面的方法编辑了这个答案:

我读到,QuickSelect似乎擅长大型logging,这是非常有效的。

参考文献:

  1. Wikipedia.org:快速select
  2. AC#实现可以被发现@ 快速计算百分比的algorithm,以去除应该被容易地转换为VB的离群值 。