Страницы: 1
RSS
Максимальное значение из массива
 
Добрый день.Вопрос:существует массив данных созданный в VBA. Массив с имеет динамическое количество строк и 2 столбца. Нужно найти максимальное значение столбца 2. Есть ли функция для этого
 
Вот часть макроса для создания массива  
lLastRow = ThisWorkbook.Worksheets("BASE").Cells(Rows.Count, 1).End(xlUp).Row  
D = ThisWorkbook.Worksheets("BASE").Range(ThisWorkbook.Worksheets("BASE").Cells(2, 9), ThisWorkbook.Worksheets("BASE").Cells(lLastRow, 26)) 'массив обрабатываемых значений  
ReDim e(1 To UBound(D, 1), 1 To 2) 'массив выбранных значений, размер в высоту с исходный, в ширину 2 колонки  
For l = 1 To UBound(D) 'перебираем массив обрабатываемых значений  
If D(l, 1) > 0 Then 'отбор значений по условию  
' Переносим в массив данные таблицы, удовлетворяющие условию  
p = p + 1         'увеличиваем индекс  
e(p, 1) = D(l, 1)  'сформированный столбец 1  
e(p, 2) = D(l, 18) 'сформированный столбец 2 в котором и нужно найти максимум  
End If  
Next l
 
Если Вы перебором заносите в массив, сразу и смотрите максимум по D(l, 18)  
Типа  
if maximum<D(l, 18) then maximum=D(l, 18)
 
Спасибо Hugo.Может я слишком усложнил когда влез в массивы.Есть таблица, мне нужно макросом отобрать максимальное значение из столбца 2, при условии что столбец 1 больше 0
 
{quote}{login=vigor}{date=19.08.2011 11:47}{thema=}{post}Есть таблица, мне нужно макросом отобрать максимальное значение из столбца 2, при условии что столбец 1 больше 0{/post}{/quote}application.WorksheetFunction.Max(Диапазон)
 
Юрий это отбор максимума из одного столбца.Это я пробовал, а мне нужно максимум из столбца 2 при условии что столбец 1 больше 0
 
{quote}{login=vigor}{date=19.08.2011 11:59}{thema=}{post}Юрий это отбор максимума из одного столбца.Это я пробовал, а мне нужно максимум из столбца 2 при условии что столбец 1 больше 0{/post}{/quote}Это не из одного столбца, а из диапазона. Делайте нужную проверку, правда, я не понимаю эту фразу: "столбец 1 больше 0"
 
Сначала проверяем диапазон ячеек столбца 1, если значение столбца 1 больше 0, тогда ищем максимальное значение в столбце 2
 
{quote}{login=vigor}{date=19.08.2011 12:06}{thema=}{post}Сначала проверяем диапазон ячеек столбца 1, если значение столбца 1 больше 0, тогда {/post}{/quote}Что за значение - тоже Мах? Переформулируйте.
 
Короче у меня вот так получилось и без массивов смотрите Юрий  
For l = 2 To lLastRow  
If ThisWorkbook.Worksheets("BASE").Cells(l, 9).Value > 0 Then  
If maxim < ThisWorkbook.Worksheets("BASE").Cells(l, 26).Value Then maxim = ThisWorkbook.Worksheets("BASE").Cells(l, 26).Value  
End If  
Next l
 
Сначала - "если значение столбца 1 больше 0"  
А в коде проверяется одна ячейка. И это притом, что изначально нужен был максимум по столбцу. Туман не рассеялся...
 
как то так  
Sub макс()  
Dim Ar(1, 100)  
Dim i, к  
For i = 0 To 100  
If Ar(0, i) > 0 And Ar(1, i) > k Then k = Ar(1, i)  
Next  
End Sub
 
vigor, Вы бы лучше выложили таблицу строк на 10, где показали бы желаемое.
 
Все вреде получилось. Спасибо всем
 
Михаил С. суперовое решение.Очень оригинально и просто.Супер!!!
 
если использовать ADO, то запрос может быть такой  
 
SELECT DISTINCTROW Max(F2)  
FROM [Лист1$A1:B10]
WHERE F1>0
Спасибо
 
Михаил сделал лишнее - один раз уже этот массив перебирали, зачем ещё раз?  
Но в чистом виде конечно...
Страницы: 1
Читают тему
Наверх