День добрый, Можно ли в двумерном массиве (10 строк, 2 столбца) без перебора (аналогично функции макс)найти максимальное значение по столбцу №2? Спасибо.
Пользователь
Сообщений: Регистрация: 16.01.2013
22.10.2010 14:38:42
что значит без перебора? а в макс думаете божественное провидение работает?
перебор будет самым быстрым способом.
Живи и дай жить..
Пользователь
Сообщений: Регистрация: 01.01.1970
22.10.2010 14:43:08
слэн, да уж, не подумал. Спасибо.
Пользователь
Сообщений: Регистрация: 21.12.2012
22.10.2010 15:03:43
Так наверно 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
Пользователь
Сообщений: Регистрация: 22.12.2012
22.10.2010 15:41:21
Да, мы тут недавно Match по массиву обсуждали. Перебор не только быстрее, но и не глючит, как Match на 2000 Экселе и на больших массивах (более ~65500 значений).
Пользователь
Сообщений: Регистрация: 21.12.2012
22.10.2010 21:31:53
на сайте примеры посмотрел Sub primer() Dim iMassiv()
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