Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Application.Worksheetfunction.Max不返回数组中的最大数字_Vba_Excel_Max_Worksheet Function - Fatal编程技术网

Vba Application.Worksheetfunction.Max不返回数组中的最大数字

Vba Application.Worksheetfunction.Max不返回数组中的最大数字,vba,excel,max,worksheet-function,Vba,Excel,Max,Worksheet Function,当我使用Application.WorksheetFunction.max函数时,我收到一个值,但是当我查看数组的各个值时,我可以找到多个值,这些值比Application.WorksheetFunction.max返回的值大。从即时窗口复制: ?Application.WorksheetFunction.max(dummyQuantileVector) 21081,4351851852 ?dummyQuantileVector(73368) 799470,509259259 这可能是

当我使用
Application.WorksheetFunction.max
函数时,我收到一个值,但是当我查看数组的各个值时,我可以找到多个值,这些值比
Application.WorksheetFunction.max
返回的值大。从即时窗口复制:

?Application.WorksheetFunction.max(dummyQuantileVector)
 21081,4351851852 
?dummyQuantileVector(73368)
 799470,509259259 
这可能是什么原因


更新:当我将整个dummyQuantileVector数组写入一张工作表,然后在其中使用use the max函数时,我得到了正确的值。

似乎
WorksheetFunction.max
只对1D数组的前34465个元素起作用。它将在二维阵列上正常工作

自定义最大值函数
您应该提供示例数据
210814351851852
799470509259259
看起来像是打印到即时窗口的两个不同字符串值。德语Excel使用,作为十进制分隔符。在编写代码时,我必须使用。在即时窗口中可能会有点混淆的分隔符是
dummyQuantileVector
dummyQuantileVector()声明为Double
?是的。然后我用ReDim把它做成我需要的尺寸。可能更复杂。我在40000个单元格中填入了从1到40000的值和
Application.WorksheetFunction.Max([A1:A40000].value)
返回40000有趣的是,这似乎只是问题的一部分,因为有些值大于Max函数返回的值,索引小于34464:
?dummyQuantileVector(13973)21153287037037
感谢你们两位的帮助。这个问题似乎也适用于与percentile函数一起使用的1D数组,最有可能的是,所有其他将数组作为输入的工作表函数。这个问题在Excel中经常出现。谢谢你接受我的回答。
Function getMaxNumberFromArray(Data As Variant)
    Dim v As Variant
    Dim n As Double
    Dim flag As Boolean

    For Each v In Data
        If Not flag Then
            n = v
            flag = True
        ElseIf v > n Then
            n = v
        End If
    Next
    getMaxNumberFromArray = n
End Function