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,这是非常有效的。
参考文献:
- Wikipedia.org:快速select
- AC#实现可以被发现@ 快速计算百分比的algorithm,以去除应该被容易地转换为VB的离群值 。