我无法弄清楚如何找到我填写的动态数组的模式。这是代码:
Sub test_array()
Dim test() As Integer
Dim i As Integer
For i = 1 To 3
ReDim Preserve test(i)
test(i) = i
Mode = Application.WorksheetFunction.Mode(test(i), 1)
Next i
End Sub
我不知道如何告诉模式函数将数组值作为数字处理。在这个例子中,模式被强制为1'因为它就像模式(1,1,2,3)
P.S。该模式是一个返回最常见数字的函数。
答案 0 :(得分:1)
您正在测试每个数字的模式而不是整个数组。循环后移动功能。
但它不喜欢使用数组和另一个数字。因此,将1添加到数组的末尾,然后在模式
中使用该数组Sub foo()
Dim test() As Integer
Dim i As Integer
Dim md As Integer
ReDim test(1 To 3) As Integer
For i = 1 To 3
test(i) = i
Next i
ReDim Preserve test(1 To UBound(test) + 1)
test(UBound(test)) = 1
md = Application.WorksheetFunction.Mode(test)
MsgBox md
End Sub
首先我们填写标准数组。并将额外的1
添加到数组中,因为MODE函数不喜欢数组和单个变量。
ReDim Preserve test(1 To UBound(test) + 1)
找到测试数组的上限。在这种情况下,它将是3.然后再添加一个框,我们可以在其中添加一个整数。
所以现在上限为4,我们使用test(UBound(test)) = 1
将1放在最后一个空格中。
这是一种确保无论数组有多大或多小的方法,它总是会在数组中再添加一个框,并在该框中放置1。