Доброго времени суток всем.
Несколько дней бьюсь над задачей и хотя и решил ее примитивнейшим образом, хочу попросить помощи в более оптимальном решении.
Есть таблица с данными.
Необходимо найти одинаковые значения в столбце "С" (это штрихкоды товара) и сравнить цены (столбец "Е").
Далее найти наибОльшую цену и присвоить ее всем ячейкам в столбце "Е" соответствующим данному ШТРИХКОДУ.
Сделал цикл For each
Но, что бы он все поменял как надо, его надо прогонять 10 раз (т.к. всегда 9-10 повторных штрихкодов), а это очень замедляет работу, особенно если учесть, что в рабочем файле 70тыс строк.
Математического склада ума у меня нет и ничего толкового придумать не могу.
Если поможете найти решение, буду очень благодарен.
файл примера с моим решением прилагаю
Всем хорошего дня.
Несколько дней бьюсь над задачей и хотя и решил ее примитивнейшим образом, хочу попросить помощи в более оптимальном решении.
Есть таблица с данными.
Необходимо найти одинаковые значения в столбце "С" (это штрихкоды товара) и сравнить цены (столбец "Е").
Далее найти наибОльшую цену и присвоить ее всем ячейкам в столбце "Е" соответствующим данному ШТРИХКОДУ.
Сделал цикл For each
Но, что бы он все поменял как надо, его надо прогонять 10 раз (т.к. всегда 9-10 повторных штрихкодов), а это очень замедляет работу, особенно если учесть, что в рабочем файле 70тыс строк.
Математического склада ума у меня нет и ничего толкового придумать не могу.
Если поможете найти решение, буду очень благодарен.
файл примера с моим решением прилагаю
Всем хорошего дня.
Код |
---|
Sub сравнить_цены() Dim LR As Long LR = Sheets("ОСТАТКИ").Cells(Rows.Count, "A").End(xlUp).Row Dim CELL_SK As Range For Each CELL_SK In Range("c2:c" & LR) 'Сравниваем если рядом 2 одинаковых Штрихкода(столбец С) и цены(столбец Е)при этом не равны, тогда: заменяем мЕньшую цену на бОльшую If CELL_SK = CELL_SK.Offset(1, 0) And CELL_SK.Offset(0, 2) <> CELL_SK.Offset(2, 2) Then If CELL_SK.Offset(0, 2) > CELL_SK.Offset(1, 2) Then CELL_SK.Offset(1, 2) = CELL_SK.Offset(0, 2) ElseIf CELL_SK.Offset(0, 2) < CELL_SK.Offset(1, 2) Then CELL_SK.Offset(0, 2) = CELL_SK.Offset(1, 2) End If End If Next CELL_SK End Sub |