使用WorksheetFunction.Frequency后,索引总是超出VBA范围

我试图将大量数据(多达一百万个条目)分成大约60个分档,用于一些数据分析,最终将被input到直方图中。 问题是,当我使用下面的代码:

Dim myBinnedData As Variant myBinnedData = Application.WorksheetFunction.Frequency(myData,myBins) 

'我必须以这种方式Dim myBinnedData否则我得到一个错误,说它不能分配给一个数组

我永远不能通过使用索引访问myBinnedData。 我能够获得数据的唯一方法是通过For Each循环,但在处理每个点之前,我需要myBinnedData中的第一个和最后一个元素。 一切工作正常在For Each循环,但任何时候我尝试索引(即数据= myBinnedData(0)),我得到索引超出范围错误,无论索引号。 我使用TypeName检查了这个types,它是Variant()。

所以问题是什么是正确的方式索引由WorksheetFunction.Frequency函数创build的数组?

任何帮助,将不胜感激!

frequency返回一个二维数组(但第二维,就我所见,只有从1到1)。 尝试

  Debug.print lbound(myBinnedData, 1), ubound(myBinnedData, 1) Debug.print lbound(myBinnedData, 2), ubound(myBinnedData, 2) 

第一行应该给你1作为下限, myBins + 1的大小作为上限。
第二行应该给你1作为下限和上限。 要循环使用数据,请使用

 dim i as integer for i = lbound(myBinnedData, 1) to ubound(myBinnedData, 1) Debug.print myBinnedData(i, 1) next i 

正如Zerk在评论中提到的那样,FunThomas回答说,Frequency函数返回一个2D数组,所以我可以使用myBinnedData(index,1)对它进行索引。 我以为我已经尝试过,但我猜不是! 谢谢您的帮助!

我从来没有试过尼古拉斯提供的答案,因为我没有从我的Excel工作表调用任何数据,我只打印到它。 myData和myBins数组是在VBA代码中创build的。