Страницы: 1
RSS
Поиск минимального и максимального значения VBA, Необходимо получить из двух сравниваемых массивов минимальное и максимально значение
 
Доброго времени суток!
Необходима помощь в решении одно задачи, с которой столкнулся во время ее решения.
Суть задачи следующая. Имеется часть таблица (по факту она будет состоять из 10000 а то и больше строк) из списка фруктов (яблоки и апельсины). Для каждого фрукта имеется (код, количество от, количество до, сумма от, сумма до). Необходимо в столбик "То что должно получится" вынести результаты из двух сравниваемых строк (которые отличаются по наименьшему и наибольшему значения) в одну строку как указано в файле примере (во вложении).
Формулами получилось сделать (происходят долгие вычисления), но необходим сам МАКРОС. Пробовал писать с массивами и циклом но выдает не те результаты что нужно. Помоги пожалуйста. Заранее спасибо!
 
Иван Бунев,
а можно видеть формулу, с помощью которой Вы уже решили данную задачу?
К сожалению, у меня не сложилось в голове, то что Вам нужно на данный момент.
Изменено: evgeniygeo - 05.08.2022 07:41:22
 
Цитата
evgeniygeo написал:
не сложилось в голове
Да, тут не так прозрачно конечно, но :
Нужно получить диапазон от-до, объединяя диапазоны если это возможно в примере в разных строках 10-15 и 16-20 дают 10-20.
Цитата
Иван Бунев написал:
помощь в решении одно задачи, с которой столкнулся во время ее решения.
Странное сочетание, столкнуться можно с проблемой во время решения, или с подзадачей.
По вопросам из тем форума, личку не читаю.
 
Код
Public Sub фрукты()

Строка1 = Cells(Rows.Count, 1).End(xlUp).Row

Фрукт = Range("A2:A" & Строка1).Value
код = Range("B2:B" & Строка1).Value
КоличествоОТ = Range("C2:C" & Строка1).Value
КоличествоДО = Range("D2:D" & Строка1).Value
СуммаОТ = Range("E2:E" & Строка1).Value
СуммаДО = Range("F2:F" & Строка1).Value

ReDim Вынести1(1 To Строка1, 1 To 1)
ReDim сцепка(1 To Строка1 - 1, 1 To 1)

For a = 1 To Строка1
On Error Resume Next
сцепка(a, 1) = КоличествоОТ(a, 1) & " - " & КоличествоДО(a, 1)
Next a

'*******Яблоко
For q = 1 To Строка1
If сцепка(q, 1) = "20 - 50" Then
If КоличествоОТ(q, 1) = "20" Then
Min = Application.Min(СуммаОТ(q, 1))
Max = Application.Max(СуммаДО(q, 1))
End If
End If
Вынести1(q, 1) = Min & " - " & Max
Next q
    Range("K2").Value = (Вынести1)

End Sub

Файл с формулами не могу скинуть, поскольку на домашнем компьютере. Могу приложить то что в VBA пытался.

Что можно сделать с этим кодом что бы когда он проверял яблоки (количество от 25 до 100) то выносил в таблицу (которая справа от основной) именно минимальное значения 10 и максимальное 20. ПРоблема в том что тут две строки (но отличаются суммы). С одной строкой все просто. ПРоблема именно с двумя строками.
 
Иван Бунев, у вас пример не заполнен до конца или там должны внезапно быть пустоты?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous,
Нет, пустот не должно быть. Вместо пустот Макрос должен вносить значения минимального и максимального значения после сверки двух строчек. Выделил цветом и подписал как должно быть.

У меня только получается если одну строку проверяет макрос и MIN и MAX значения.
 
Иван Бунев, сейчас покажу
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Буду очень признателен, много чего уже пробовал. Ничего толком не получилось. А этих строк может быть от 10000  
 
открывайте файл, жмите кнопку
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Скрины, файл и кусок кода
сделал через свод - подумал, что код для вас будет слишком сложным, да и вариант кодом у вас уже есть

UPD:
Цитата
Ігор Гончаренко: открывайте файл, жмите кнопку
и получаете даты вместо сцепки  :D
ТС не просто так, наверное, тире между числами пробелами отбивает…
Изменено: Jack Famous - 05.08.2022 11:28:08
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ігор Гончаренко, Jack Famous огромное спасибо за уделенное время на решении данной задачи.

Просмотрел оба варианта, сводка конечно хорошо, но мне потом эту информацию необходимо выносить на печать. Поэтому попросил сделать наводку на VBA код, поэтому буду сидеть и просматривать как работает данное творение.

Да, заметил что вместо цифр выдает даты, уже подправил. Спасибо за помощь ;)  
Изменено: Иван Бунев - 06.08.2022 10:05:44
Страницы: 1
Наверх