Страницы: 1
RSS
Макрос для замены значений
 
Уважаемые Гуру.  
Люди мы не местные помогите чем можете.  
По поиску не смог найти нужное решение. С макросом меняющим значения в одном столбце по заданому критерию решил сам, а как прописать код, что бы поиск проходил в одном столбце а замена проходила в другом столбце решить не могу. С VBA только начинаю знакомство.  
Например поиск значения "01-04" в столбце "код програмы" и замена значения в столбце "название" на значение "ХХХ".  
Таблица имеет несколько тысяч строк, ВПР не подходит как и ПОИСК и Замена.
 
Т.е. - нужно найти произвольное значение в столбце А, и в найденной строке заменить в столбце D значение на другое произвольное. Так?
 
Sub tt()  
For Each cc In [a2:a24]
If cc.Value = "01-04" Then cc.Offset(, 3) = "XXX"  
Next  
End Sub  
 
Это перебором, без поиска, и в строго заданном диапазоне.  
Зато просто.
 
{quote}{login=Hugo}{date=17.11.2010 11:19}{thema=}{post}Sub tt()  
For Each cc In [a2:a24]
If cc.Value = "01-04" Then cc.Offset(, 3) = "XXX"  
Next  
End Sub  
 
Это перебором, без поиска, и в строго заданном диапазоне.  
Зато просто.{/post}{/quote}  
Да, спасибо, а если диапазон заранее не известен?
 
Sub tt()  
Set ra = Range([A2], Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp)))
For Each cc In ra  
If cc.Value = "01-04" Then cc.Offset(, 3) = "XXXX"  
Next  
End Sub
 
Гляньте и мой вариант. Только у Вас много одинаковых кодов в столбце. Макрос обработает первый найденный.
 
Если требуется обработать ВСЕ такие коды, то макрос нужно будет немного подправить.
 
{quote}{login=Юрий М}{date=17.11.2010 11:35}{thema=}{post}Если требуется обработать ВСЕ такие коды, то макрос нужно будет немного подправить.{/post}{/quote}  
Да. Необходимо обработать все строки с заданіми кодами, т.е. каждому коду подставить определенное значение.
 
Тогда так.
 
Огромное спасибо всем за помощь.
 
{quote}{login=Hugo}{date=17.11.2010 11:33}{thema=}{post}Sub tt()  
Set ra = Range([A2], Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp)))
For Each cc In ra  
If cc.Value = "01-04" Then cc.Offset(, 3) = "XXXX"  
Next  
End Sub{/post}{/quote}
 
{quote}{login=Hugo}{date=17.11.2010 11:19}{thema=}{post}Sub tt()  
For Each cc In [a2:a24]
If cc.Value = "01-04" Then cc.Offset(, 3) = "XXX"  
Next  
End Sub  
 
Это перебором, без поиска, и в строго заданном диапазоне.  
Зато просто.{/post}{/quote}  
 
Уважаемый Hygo еще раз огромное спасибо за помощь, но при работе столкнулся со следующей проблемой: при увеличении количества записей кодов (типпа "01-04", "01-05" и т.д. действие макроса замедляется. В єтой связи возникает вопрос а как упростить? Ответ как бі на поверхности, но не зная макросов довольно сложно сделать. Так вот - в связи с тем что меня в коде интересует только значение первіх двух символов что нужно изменить в Вашем макросе, что бі поиск проходил по первім двум символам до дефиса? В приведенном прмере єто будет "01-ХХ" т.е. после дефиса любое значение.
 
На сотню кодов вроде не должно тормозить... На пару тысяч может быть...  
Вообще быстрее было бы взять диапазон в массив, проанализировать содержимое массива, сформировать по результатам другой и выгрузить его. В ~40 раз быстрее должно быть, но есть ограничения - если выгружать массив, то затрётся всё, что под ним.    
Можно только анализировать массив, а результат сразу писать на лист - тогда неизменяемые существующие значения не затронутся.  
В общем - с Вас пример файла с данными.
 
Хотя там ведь выше уже есть - не заметил... Сейчас...
 
На массивах, проверяйте.  
Данные в D не затираются, но переписываются поверх. Т.е. если там были формулы - то станут только значения.
 
Ученик117, ну почему бы Вам не доставить раскладку "Русская"? Я тоже украинец, живу в Украине. Но это русскоязычный форум. "planetaexcel.ru" вот это самое .ru об этом свидетельствует. Будь Вы хоть каким заскорузлым националистом, ради Бога! Но в чужой монастырь со своим уставом не лезут. По мне, так мы позорим свою нацию написанием перлов типа: "Ответ как бі", "первіх двух" и т.д. в русскоязычных форумах. Да ладно, в любых форумах это выглядит дико, с точки зрения культуры. Напиши Вы это україньскою, можно было бы понять. Тут не один я украинец. И помогают не глядя на национальность. Даже глухонемым и неграмотным стараются помочь(Маслов). Так ради Бога, не позорьте нацию, пишите грамотно. Или уж пишите україньскою, поймут надеюсь.  
 
Фу-ух. Наболело.
Я сам - дурнее всякого примера! ...
 
офф  
Да, кстати... Как бы отреагировал форум, если бы я со своим земляком здесь начал писать латиницей, да и ещё всем совершенно непонятное?  
Хотя украинский в основном понятен, но пару раз бывал такой диалог    
(правда не здесь, на другом .ru форуме), что я понял 50% всего...
 
{quote}{login=Hugo}{date=12.04.2011 10:46}{thema=}{post}офф  
Да, кстати... Как бы отреагировал форум, если бы я со своим земляком здесь начал писать латиницей, да и ещё всем совершенно непонятное?  
Хотя украинский в основном понятен, но пару раз бывал такой диалог    
(правда не здесь, на другом .ru форуме), что я понял 50% всего...{/post}{/quote}Игорь, я тя умоляю, не делай так:-) Точно весь форум в ступор введешь! Хотя, ради дурного примера... Шучу, брат:-) Ты хорош таким, каков есть. С уважением, Сергей.
Я сам - дурнее всякого примера! ...
 
Да здесь и поговорить-то не с кем... В смысле на моём локальном :) Я сам русский, но местный язык знаю...  
Ладно, отвлеклись.
 
Hugo сспасибо за ответ. Завтра попробую проверить подсказку.  
 
KukLP  
Причем здесь национализм? Вы не думали о усталости человека и простой не внимательности?
 
{quote}{login=Ученик117}{date=12.04.2011 11:18}{thema=}{post}  
KukLP  
Причем здесь национализм? Вы не думали о усталости человека и простой не внимательности?{/post}{/quote}  
А Вы думали о том, что Ваши посты читают сотни, если не тысячи людей? И оценивают с точки зрения национальной грамотности. И я устал и внимание... Ну ладно, это я уж загнул, но тем не менее - давайте стараться? Очень прошу.
Я сам - дурнее всякого примера! ...
Страницы: 1
Читают тему
Наверх