2014-11-20 122 views
1

我有一個關於我的功能,在雙陣列返回人數最多的一個問題。 這是我當前的代碼看起來像調用雙陣列功能

Function return_largest() 
last_row = Range("A1").End(xlDown).Row 
Dim array_1() 
ReDim array_1(last_row - 2, 5)  

For i = 0 To last_row - 2 

    array_1(i, 0) = Range("A" & i + 2) 
    array_1(i, 1) = Range("B" & i + 2) 
    array_1(i, 2) = Range("C" & i + 2) 
    array_1(i, 3) = Range("D" & i + 2) 
    array_1(i, 4) = Range("E" & i + 2) 

Next 

MsgBox Application.WorksheetFunction.Max(array_1) 

End Function 

此功能爲5x5的陣列。我應該如何改變這種代碼,如果我想使其可用於維數組的函數(I,K)?

換句話說,我該如何編寫一個函數,該函數可以找到一個數組的最大元素,該數組可以在子程序中調用大小爲(x,y)的數組(無論子過程中的數組有多大),以及該子程序的語法是什麼?

+0

要的範圍內轉換爲一個陣列使用'array_1 =範圍( 「A1」) .Resize(100,5).Value'例如。沒有必要先使用'ReDim'函數來初始化它。 – ja72 2014-11-21 01:46:04

回答

1

如果從工作表中調用這個和不及格的範圍內,Excel可以看到沒有依賴性,並且不會重新計算時的範圍內變化。

Function return_largest(r As Range) As Double 
    return_largest = WorksheetFunction.Max(r.Value2) 
End Function 

然後,可以使用動態或靜態範圍叫它:

= return_largest(A1:K5)