Я провел простой тест, рассчитывающий цикл цикла с функцией Max WorksheetFunction в одномерном массиве. Кажется, что их скорость сопоставима.
Вам потребуется использовать WorksheetFunction.Index в сочетании с WorksheetFunction.Max для многомерных массивов. Это сделало бы цикл массива явно быстрее из многомерных массивов
Тестовый код
Option Explicit
Sub TestTimes()
Dim Max1 As Long, Max2 As Long, results() As Long, n As Long, t1 As Double, t2 As Double
results = getData
For n = 1 To 10
t1 = getWorksheetFunctionMaxTime(results, Max1)
t2 = getWorksheetFunctionMaxTime(results, Max2)
Debug.Print "WorksheetFunction Time: "; t1, "Array Loop Time: "; t2, Max1 = Max2
Next
End Sub
Function getData() As Long()
Dim results(1 To 10000000) As Long
Dim r As Long
For r = 1 To 10000000
results(r) = r
Next
getData = results
End Function
Function getWorksheetFunctionMaxTime(ByRef results() As Long, ByRef Max As Long) As Double
Dim t As Double: t = Timer
Max = WorksheetFunction.Max(results)
getWorksheetFunctionMaxTime = Round(Timer - t, 2)
End Function
Function getLoopArrayMaxTime(ByRef results() As Long, ByRef Max As Long) As Double
Dim r As Long, LocalMax As Long
Dim t As Double: t = Timer
For r = 1 To 10000000
If results(r) > LocalMax Then LocalMax = r
Next
Max = LocalMax
getLoopArrayMaxTime = t
End Function