Страницы: 1
RSS
Сравнить наибольшее значение в соседних ячейках по условию, и заменить мЕньшие значения бОльшими.
 
Доброго времени суток всем.
Несколько дней бьюсь над задачей и хотя и решил ее примитивнейшим образом, хочу попросить помощи в более оптимальном решении.

Есть таблица с данными.
Необходимо найти одинаковые значения в столбце "С" (это штрихкоды товара) и сравнить цены (столбец "Е").
Далее найти наибОльшую цену и присвоить ее всем ячейкам в столбце "Е" соответствующим данному ШТРИХКОДУ.

Сделал цикл 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
 
Здравствуйте! Такую задачу можно решить с помощью формулы массива в дополнительном столбце. Может поможет
Код
=МАКС((C2=$C$2:$C$28)*($E$2:$E$28))
 
Спасибо большое!
Да, в основном рабочем файле данная формула тоже работает, но к сожалению тоже очень долго при большом объеме данных.
Вот я и хотел узнать, может есть какой то более оптимизированный вариант? Может стороннюю процедуру, которая вызывается только в том случае, если цены у одного ШК разные и тогда компьютеру не придется в холостую просчитывать весь список значений, даже там, где цены одинаковые и ничего менять не надо??  
Страницы: 1
Читают тему
Наверх