Доброго времени. Задача вполне тривиальная: имеется массив, необходимо сделать так, чтобы для каждого уникального значение первого столбца выводилось соответствующее минимальное из второго и максимальное из третьего. После чего вычислялась разница max-min. Я попытался сделать макрорекордером через сводные, но это не подходит, ибо массив намного больше и обработка занимает много времени. Должен быть способ сделать это с помощью создания коллекции, только я не знаю как. Поделитесь мудростью, пожалуйста
Доброго времени. Задача вполне тривиальная: имеется массив, необходимо сделать так, чтобы для каждого уникального значение первого столбца выводилось соответствующее минимальное из второго и максимальное из третьего. После чего вычислялась разница max-min. Я попытался сделать макрорекордером через сводные, но это не подходит, ибо массив намного больше и обработка занимает много времени. Должен быть способ сделать это с помощью создания коллекции, только я не знаю как. Поделитесь мудростью, пожалуйста argetlam
Sub main() Dim a As Double Columns(4).Clear For r = 2 To Rows.Count If Cells(r, 1) <> Cells(r - 1, 1) Then If a > 0 Then Cells(r - 1, 4) = Cells(r - 1, 3) - a End If a = Cells(r, 2) End If If Cells(r, 1) = "" Then Exit For Next End Sub
[/vba]
Как-то так - [vba]
Код
Sub main() Dim a As Double Columns(4).Clear For r = 2 To Rows.Count If Cells(r, 1) <> Cells(r - 1, 1) Then If a > 0 Then Cells(r - 1, 4) = Cells(r - 1, 3) - a End If a = Cells(r, 2) End If If Cells(r, 1) = "" Then Exit For Next End Sub
Sclif666, Это определенно оно! Не совсем понятно как, однако работает! Спасибо! А можете пояснить, какое значение вначале принимает "a"? А то моя не понимает...
P.S. Открылась проблема - если ФИО не по порядку, то макрос отрабатывает некорректно. Хотя сделать сортировку не проблема)
Sclif666, Это определенно оно! Не совсем понятно как, однако работает! Спасибо! А можете пояснить, какое значение вначале принимает "a"? А то моя не понимает...
P.S. Открылась проблема - если ФИО не по порядку, то макрос отрабатывает некорректно. Хотя сделать сортировку не проблема)argetlam
Сообщение отредактировал argetlam - Пятница, 12.02.2016, 23:21