Страницы: 1
RSS
VBA максимальное значение в массиве
 
День добрый,  
Можно ли в двумерном массиве (10 строк, 2 столбца) без перебора (аналогично функции макс)найти максимальное значение по столбцу №2?  
Спасибо.
 
что значит без перебора? а в макс думаете  божественное провидение работает?  
 
перебор будет самым быстрым способом.
Живи и дай жить..
 
слэн,  
да уж, не подумал. Спасибо.
 
Так наверно  
Sub Max_Array_Test()  
Dim Arr(1, 9), s, i, j  
For i = 0 To 1: For j = 0 To 9  
 Arr(i, j) = Rnd  
Next: Next  
s = Application.WorksheetFunction.Max(Arr)  
Debug.Print s  
End Sub
 
Да, мы тут недавно Match по массиву обсуждали. Перебор не только быстрее, но и не глючит, как Match на 2000 Экселе и на больших массивах (более ~65500 значений).
 
на сайте http://msoffice.nm.ru/faq/macros/variables.htm#faq548  
примеры посмотрел  
Sub primer()  
Dim iMassiv()  
 
'Здесь идёт заполнение массива некими данными  
iMassiv = [a1:e10].Value
MsgBox Join(Application.Transpose(Application.Index(iMassiv, 0, 1)), vbNewLine), , "Первый столбец :"  
 
'или так  
 
With Application  
    MsgBox Join(.Transpose(.Index(iMassiv, 0, 3)), _  
    Chr(10)), , "Третий столбец :"  
End With  
 
With WorksheetFunction  
    MsgBox Join(.Transpose(.Index(iMassiv, 0, 5)), _  
    Chr(13)), , "Пятый столбец :"  
End With  
 
Dim iAverage#, iMin#, iMax#, iSum#, iProduct  
 
'    For iCount = 1 To 100  
'        iMassiv(iCount) = Rnd * 1000  
'    Next  
 
   With Application  
        iAverage = .Average(iMassiv)  
        iMin = .Min(.Transpose(.Index(iMassiv, 0, 3)))  
        iMax = .Max(.Transpose(.Index(iMassiv, 0, 4)))  
        iSum = .Sum(iMassiv)  
        iProduct = .Product(iMassiv)  
   End With  
End Sub
Страницы: 1
Читают тему
Наверх