如何创build一个VBA函数来查找数组中每一行的最大值

我想创build一个自定义函数来查找数组中每个“行”的最大值。 例如,我有一个样本5×3维数组如下:

[ 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0] 

我想要得到每行的最大值,它应该以下面的forms出现:[0 1 1 1 0]

请注意,这只是一个例子。 我面对相当多的matrix需要这个任务。 我在网上做了一些研究,但找不到一个简单的解决scheme。 有一个我发现需要输出到电子表格之前find最大值(输出到电子表格不是首选,但)。 这个代码如下:

 Function Max_Each_Row(Data_Range As Range) As Variant Dim TempArray() As Double, i As Long If Data_Range Is Nothing Then Exit Function With Data_Range ReDim TempArray(1 To .Rows.count) For i = 1 To .Rows.count TempArray(i) = Application.Max(.Rows(i)) Next End With Max_Each_Row = TempArray End Function 

有人能指出我正确的方向吗? 即创build一个函数()来在每行中查找具有最大值的所需数组,而不向电子表格中输出任何内容。

谢谢你的帮助!

将input从一个范围更改为一个数组:

 Function Max_Each_Row(Data_Range() As Variant) As Variant() Dim TempArray() As Variant, i As Long ReDim TempArray(LBound(Data_Range, 1) To UBound(Data_Range, 1)) For i = LBound(Data_Range, 1) To UBound(Data_Range, 1) TempArray(i) = Application.Max(Application.Index(Data_Range, i + 1, 0)) Next Max_Each_Row = TempArray End Function 

那么你可以直接从这样的子调用它。

 Sub mxrow() Dim arr(4, 2) As Variant Dim outArr() As Variant arr(0, 0) = 0 arr(0, 1) = 0 arr(0, 2) = 0 arr(1, 0) = 0 arr(1, 1) = 1 arr(1, 2) = 1 arr(2, 0) = 1 arr(2, 1) = 0 arr(2, 2) = 1 arr(3, 0) = 1 arr(3, 1) = 1 arr(3, 2) = 1 arr(4, 0) = 0 arr(4, 1) = 0 arr(4, 2) = 0 outArr = Max_Each_Row(arr) Dim i As Long For i = LBound(outArr) To UBound(outArr) Debug.Print outArr(i) Next i End Sub 

试试这个,它会正常工作

  Option Explicit Option Base 1 'by jlqmoreno@gmail.com Public Function MAX_IN_EACH_ROW(Rango As Object) As Variant Dim n%, i%, j%, MR() As Variant n = Rango.Rows.Count ReDim MR(n) For i = 1 To n Step 1 MR(i) = Application.Max(Application.Index(Rango, i, 0)) '#In here I am slicing the original range into rows Next i MAX_IN_EACH_ROW = MR End Function 

希望能帮助到你