我正在尝试将大量数据(最多一百万个条目)存入~60个二进制位,以便与最终将被输入直方图的一些数据分析一起使用。问题是当我使用下面的代码时:
{{1}}
'我不得不以这种方式对myBinnedData进行Dim,否则我会收到错误,说它无法分配给数组
我永远无法通过使用索引访问myBinnedData。我能够获取数据的唯一方法是通过For Each循环,但在处理每个点之前,我需要myBinnedData中的第一个和最后一个元素。在For Each循环中一切正常,但是无论何时我尝试索引(即data = myBinnedData(0)),无论索引号如何,我都会得到Index Out of Range错误。我使用TypeName检查了类型,它是Variant()。
所以问题是,索引由WorksheetFunction.Frequency函数创建的数组的正确方法是什么?
任何帮助将不胜感激!
答案 0 :(得分:2)
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
答案 1 :(得分:0)
正如Zerk在评论中提到的那样,FunThomas回答说,Frequency函数返回一个2D数组,所以我能够使用myBinnedData(index,1)对其进行索引。我以为我已经尝试过了,但我猜不是!谢谢你的帮助!
我从未尝试过Nikolaos提供的答案,因为我不会从Excel表格中调用任何数据,我只会打印到它。 myData和myBins数组是在VBA代码中创建的。