Страницы: 1
RSS
Поиск и замена значений по двум критериям. Доработать макрос
 
Добрый день. Немало времени провел на форуме, в поисках ответа на свой вопрос, который удалось решить лишь частично. Необходимо доработать макрос который бы проверял значения по двум диапазонам данных и при совпадении производил замену по образцу. В примере более подробное описание задачи. Заранее благодарен.
 
Народ, кому не лень помогите профану разобраться с If, End if, и сопутствующей ей логики, замучался уже.
 
Да вроде не сложно. Но мне например не понятно, что именно нужно сделать. Думаю не только мне...
 
Да, действительно, не совсем понятно. Может так  
 
Sub Раскрсписок6_Изменение()  
   Dim indexRange As Range, indexCell As Range  
   With Sheets("Лист1")  
       Set indexRange = .Range("A13:A21")  
       For Each indexCell In indexRange  
           If indexCell.Value = .[E10] Then
               If indexCell.Offset(0, 1) = .[E5] Then indexCell.Offset(0, 1) = .[F5]
           End If  
       Next indexCell  
       .[E5].Value = .[F5].Value
   End With  
End Sub
 
Попробую объяснить, более подробно чего нужно добиться в примере. Во первых я недосмотрел, и в управляющем элементе должен был быть выбран пункт "D". Работать пример должен в таком порядке - при выборе в управляющем элементе нового значения производиться проверка диапазона А13:А21 с первой по последнюю ячейку на совпадение с ячейкой Е10. Если совпадения нет, то проверяет следующую ячейку. Если совпадение найдено то макрос должен проверить соответствующую ей ячейку в столбце "В"(в примере этому условию соответствуют В15, В17 и В21). Далее если ячейка в столбце "В" не равна "Е5" то проверяется следующая ячейка в диапазоне А13:А21. Если совпадение со значением "Е5" есть, то значение этой ячейки должно быть заменено на значение ячейки "F5". Далее макрос проверяет следующую ячейку в диапазоне А13:А21.
 
Мой код не так работает?
 
Пока сочинял, Coca-Cola все сделал как надо, спасибо огромное. Еще маленький вопрос по функции Offset(0, 1), я так понял "0" это смещение вверх или вниз от текущей ячейки, а "1" это смещение вправо.
 
Работает как надо, еще раз спасибо
 
да, Offset(смещение_по_строкам, смещение_по_столбцам)  
 
Например, ActiveCell.Offset(1,1) - смещение на 1 строку вниз и на 1 столбец вправо
Страницы: 1
Читают тему
Наверх