使用 WorksheetFunction.Frequency 后,索引总是在 VBA 中超出范围
Index ALWAYS Out of Range in VBA after using WorksheetFunction.Frequency
我正在尝试将大量数据(最多一百万个条目)分箱到大约 60 个分箱中,以用于一些最终将被输入直方图的数据分析。问题是当我使用下面的代码时:
Dim myBinnedData As Variant
myBinnedData = Application.WorksheetFunction.Frequency(myData,myBins)
'我必须以这种方式调暗 myBinnedData,否则我会收到一条错误消息,指出它无法分配给数组
我永远无法通过使用索引访问 myBinnedData。我能够获取数据的唯一方法是通过 For Each 循环,但在我处理每个点之前,我需要 myBinnedData 中的第一个和最后一个元素。在 For Each 循环中一切正常,但每当我尝试索引(即 data = myBinnedData(0))时,无论索引号如何,我都会收到 Index Out of Range 错误。我已经使用 TypeName 检查了类型,它是 Variant()。
所以问题是,索引由 WorksheetFunction.Frequency 函数创建的数组的正确方法是什么?
如有任何帮助,我们将不胜感激!
frequency
returns 一个二维数组(但据我所知,第 2 维只是从 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 函数 returns 是一个二维数组,因此我能够使用 myBinnedData(index,1) 对其进行索引。我以为我已经尝试过了,但我想没有!感谢您的帮助!
我从未尝试过 Nikolaos 提供的答案,因为我没有从我的 Excel sheet 调用任何数据,我只打印它。 myData 和 myBins 数组是在 VBA 代码中创建的。
我正在尝试将大量数据(最多一百万个条目)分箱到大约 60 个分箱中,以用于一些最终将被输入直方图的数据分析。问题是当我使用下面的代码时:
Dim myBinnedData As Variant
myBinnedData = Application.WorksheetFunction.Frequency(myData,myBins)
'我必须以这种方式调暗 myBinnedData,否则我会收到一条错误消息,指出它无法分配给数组
我永远无法通过使用索引访问 myBinnedData。我能够获取数据的唯一方法是通过 For Each 循环,但在我处理每个点之前,我需要 myBinnedData 中的第一个和最后一个元素。在 For Each 循环中一切正常,但每当我尝试索引(即 data = myBinnedData(0))时,无论索引号如何,我都会收到 Index Out of Range 错误。我已经使用 TypeName 检查了类型,它是 Variant()。
所以问题是,索引由 WorksheetFunction.Frequency 函数创建的数组的正确方法是什么?
如有任何帮助,我们将不胜感激!
frequency
returns 一个二维数组(但据我所知,第 2 维只是从 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 函数 returns 是一个二维数组,因此我能够使用 myBinnedData(index,1) 对其进行索引。我以为我已经尝试过了,但我想没有!感谢您的帮助!
我从未尝试过 Nikolaos 提供的答案,因为我没有从我的 Excel sheet 调用任何数据,我只打印它。 myData 和 myBins 数组是在 VBA 代码中创建的。