VBA WorkSheetFunction.Mode 动态填充数组
VBA WorkSheetFunction.Mode of a Dynamic Populated Array
我不知道如何找到我填写的动态数组的模式。这是代码:
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 ''因为它会像 Mode(1,1,2,3)
P.S。该模式是一个函数,表示 returns 最经常出现的数字。
您正在单独测试每个数字的模式,而不是整个数组。在循环之后移动函数。
但它不会喜欢使用一个数组和另一个数字。所以将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放在最后一个space。
这是一种确保无论数组有多大或多小,它总是会在数组中再添加一个框并在该框内放入 1 的方法。
我不知道如何找到我填写的动态数组的模式。这是代码:
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 ''因为它会像 Mode(1,1,2,3)
P.S。该模式是一个函数,表示 returns 最经常出现的数字。
您正在单独测试每个数字的模式,而不是整个数组。在循环之后移动函数。
但它不会喜欢使用一个数组和另一个数字。所以将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放在最后一个space。
这是一种确保无论数组有多大或多小,它总是会在数组中再添加一个框并在该框内放入 1 的方法。