2014-11-20 2 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 

이 기능은 5 × 5 배열에 대해 작동하는 모습입니다. 배열을 차원 (i, k)으로 사용할 수 있도록하려면이 코드를 어떻게 변경해야합니까?

즉, 크기 (x, y)의 배열에 대해 하위 프로 시저에서 호출 할 수있는 배열에 대해 가장 큰 요소를 찾는 함수를 작성할 수 있습니다 (하위 프로 시저의 배열에있는 모든 차원). 해당 하위 프로 시저의 구문은 무엇입니까?

+0

가 배열 사용 범위를 변환하려면'배열 _1 = 범위 ("A1") .Resize (100,5) .Value' 예를 들면. 'ReDim' 함수를 사용하여 먼저 초기화 할 필요가 없습니다. – ja72

답변

1

워크 시트에서이 값을 호출하고 범위를 벗어나는 경우 Excel은 종속성이없는 것으로보고 범위가 변경되면 다시 계산하지 않습니다. 그런 다음

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

동적 또는 정적 범위를 사용하여 호출 할 수 있습니다 :

= return_largest (A1 : K5)