gpt4 book ai didi

arrays - 在 Excel 中检索模式数组的值

转载 作者:行者123 更新时间:2023-12-04 20:33:26 35 4
gpt4 key购买 nike

我们有一些包含数千个数字的电子表格,我们希望在其中返回模式数组。 MODE.MULT 只能处理 254 个数字。

为了克服这个问题,我们拆分模式数组以检查单列的 252 个单元。然后我们将从这些数字中检查模式(理解这会增加一定程度的错误,但考虑到集合大小,我们认为它很小)。

这导致我们将一个锯齿状数组分配给模式函数,但我们在检索其中的值时遇到了问题:

Dim ModeArray() As Variant 'Also tried ModeArray as not an array of variants but that left the same errors
Dim RowSet As Integer
RowSet = 2

Dim rr As Range

For n = 2 To 252
Set rr = Sheet5.Range(Sheet5.Cells(7, n), Sheet5.Cells(260, n))
If Application.WorksheetFunction.CountBlank(rr) < 253 Then
'Needed because a 1004 error will pop if there are no numbers in a particular column
ModeArray = Application.WorksheetFunction.Mode_Mult(rr)

For i = 1 To UBound(ModeArray)
Sheet5.Cells(RowSet, n).Value = ModeArray(i)
'We get a few different errors. E.g. sub script out of range errors or if (1)(1) is tested "Object doesn't support this property or method (Error 438)" even though the TypeName(ModeArray(i)) is Double
RowSet = 1 + RowSet
Next
RowSet = 2
End If
Next

我们只期望每列有 2-3 个模式,但为 5 个模式留出了空间。然而,这不是我们的问题。试图从 ModeArray 中检索信息不起作用,它的类型是 Variant() .

我们如何才能得到模式的实际值,以便我们可以在另一个表中报告它们?我知道我可以直接在工作表中放入数组函数,但我想避免处理下游的“N/A”值,而且我没有办法确定模式数组的长度一个函数。

或者,有没有办法一起跳过这一切并检索一个非常大的数据集的模式?

编辑:

我应该注意,如果只有一种模式,上面的脚本将起作用,如果有多个模式,那就有问题了。

最佳答案

MODE.MULT 可以在每个参数中处理超过 254 个数字 - 它的限制是它不能处理超过 254 个不同的参数。

Sub modes()
Dim modearray As Variant
Dim j As Long
modearray = Application.WorksheetFunction.Mode_Mult(Range("Sheet1!A:B"))
If UBound(modearray) = 1 Then
Debug.Print modearray(1)
Else
For j = LBound(modearray) To UBound(modearray)
Debug.Print modearray(j, 1)
Next j
End If
End Sub

这适用于(有点慢)列 A 和 B 中的几千个数字

关于arrays - 在 Excel 中检索模式数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46244111/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com