Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
RSS
Автоизменение значения в зависимости от условия на другом листе.
 
Здравствуйте!
Надо сделать макрос (или по другому как то) для гугл таблиц (как вариант- ексель) для замены текста в 1м столбце таблицы в зависимости от условий на другом  листе.
Речь идёт о номерах телефонов. Номера должны меняться если будет найдено совпадение в списке условий.
Напр., есть номер 1234567, и есть условие: "если номер начинается с 1234 то поменять эти цифры на 7788".
То есть номер должен стать 7788567
Условий таких около 30.
Тут пример https://goo.gl/hHsDpy  
Изменено: oleg.orlov1 - 28 Мар 2018 17:37:01
 
oleg.orlov1, это же форум ексель.. а у Вас кажется файл- пример в гугл таблицах.

кажется так и без макроса для данного примера.
Изменено: a.i.mershik - 28 Мар 2018 17:24:49
 
ну скачайте - будем вам в ексель ) . Я больше привык в гугл таблицах работать, но если дадите решение в ексель (у меня 2016 версия) то буду там применять  
 
oleg.orlov1, к сведению
Цитата
oleg.orlov1 написал: ну скачайте - будем вам в ексель )
ВЫПИСКА из ПРАВИЛ
Цитата
 2.2. Опишите максимально подробно вашу задачу и желаемый результат. Желательно уточнить вашу версию Excel.
   2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
 
приложил
 
Цитата
a.i.mershik написал: пример для макроса.xlsx  (9.17 КБ)
файл уже посмотрите давно прикреплен ну это с доп столбцом. А замена в самих ячейках - только макрос)
Изменено: a.i.mershik - 29 Мар 2018 14:25:30
 
Цитата
a.i.mershik написал:
кажется так и без макроса для данного примера.
=LOOKUP(2;1/SEARCH(условие!$A$1:$A$2;исходник!$A1);условие!$B$1:$B$2) разве будет каждое значение проверять  по всему списку условий и менять в случае совпадения?
 
Цитата
a.i.mershik написал:
А замена в самих ячейках - только макрос)
oleg.orlov1, рядом только в доп столбце.
 
извините, но не совсем могу понять вас
Если про прикреплённый вами файл с той формулой то в принципе мне и с дополнительным столбцом подходит.  
Изменено: oleg.orlov1 - 29 Мар 2018 14:25:50
 
oleg.orlov1, формула в желтом столбце. Решает ваш вопрос подставляет и меняет даныне но только не в той ячейке которой хотите а рядом. если надо в столбце А - то только макрос.
 
Цитата
a.i.mershik написал:
формула в желтом столбце. Решает ваш вопрос подставляет
добавил условие, потом добавил значение, соответствующее условию- не работает формула
 
oleg.orlov1, так диапазон нужно сменить.
Код
=ПРОСМОТР(2;1/ПОИСК(условие!$A$1:$A$3;исходник!$A1);условие!$B$1:$B$3)
 
да, теперь понял, сколько строк с условиями столько и максимальная цифра в формуле. Работает. Только вот одно условие надо соблюсти (не учёл его в описании)- проверять (и менять) надо только числа с самого начала (там замена кодов телефона) чтобы не меняло фрагмент в середине числа.  
 
oleg.orlov1,
 
Цитата
oleg.orlov1 написал:
проверять (и менять) надо только числа с самого начала
это теперь работает, но всё же есть 2 проблемы:
1. совпавший фрагмент надо менять но оставшиеся цифры надо добавлять к результату, к примеру был номер 123111 есть условие что 123 поменять на 222. Результат должен быть не 222 (как сейчас) а 222111
2. если совпадений не обнаружено то в столбец В надо копировать номер без изменений (сейчас выдаёт ошибку, но если поменять в конце формулы "error" на А1 то всё нормально, так что вроде как п.2 решён)
Изменено: Олег Орлов - 28 Мар 2018 19:32:38
 
oleg.orlov1,
 
Цитата
oleg.orlov1 написал:
оставшиеся цифры надо добавлять к результату
да, это теперь появилось в присланном вами файле. Но возникли другие проблемы.
Как пример- даю два файла, в первом при добавлении новых значений при сохранении условий- результат #N/A (если добавлять аналогичные предыдущим значения- тогда работает). Во втором- поменял условия- везде в результатах  #N/A
 
Олег Орлов, ну добавите проверку еслиошибка ссылка на то что есть и все
Код
=--ЕСЛИОШИБКА(ЕСЛИ(ПРОСМОТР(2;1/ПОИСК(условие!$A$1:$A$4&"*";исходник!$A1);условие!$A$1:$A$4)=ЗНАЧЕН(ЛЕВСИМВ(A1;ДЛСТР(ПРОСМОТР(2;1/ПОИСК(условие!$A$1:$A$4&"*";исходник!$A1);условие!$A$1:$A$4))));ПОДСТАВИТЬ(A1;ЗНАЧЕН(ЛЕВСИМВ(A1;ДЛСТР(ПРОСМОТР(2;1/ПОИСК(условие!$A$1:$A$4&"*";исходник!$A1);условие!$A$1:$A$4))));ПРОСМОТР(2;1/ПОИСК(условие!$A$1:$A$4&"*";исходник!$A1);условие!$B$1:$B$4);1);$A1);A1)
Изменено: a.i.mershik - 29 Мар 2018 14:26:32
 
к сожалению не работает
http://prntscr.com/ixzmzn  
Screenshot_1.png (56.04 КБ)
Изменено: Олег Орлов - 29 Мар 2018 14:50:43
 
Олег Орлов, ну тут проблема в том что если будет написано что формулой ищет  1234567890 а другой будет 2345678901 и а в списке условий они будут  12345 и 23456 - то он найдет последнее в столбце...
Изменено: a.i.mershik - 29 Мар 2018 14:47:27
 
a.i.mershik, возможно я неправильно сформулировал задачу, так я повторю.
Есть список условия типа "при нахождении вначале числа 123 менять на 000", а "при нахождении 1234 менять на 111". Таких условий как оказалось более 500 шт.
Периодически надо проверять файлы где в колонке А находятся исследуемые числа (номера телефонов). В файлах может быть и 30000 строк.  
 
Олег Орлов, я думаю что  формулой это не сделать так как я сказал что получается в итоге.
 
Олег Орлов, сделайте пример более нормальный столбец исходные данные, столбец так должно получится это все руками и более близко к реальности а не ваши 123 такие телефоны только внутренние есть
Лень двигатель прогресса, доказано!!!
 
a.i.mershik, я готов заплатить за нормально работающий скрипт
 
Цитата
Сергей написал: сделайте пример
сделал, смотрите
 
вариант
Лень двигатель прогресса, доказано!!!
 
Сергей,а как изменить формулу чтобы внести требуемое кол-во условий?
 
увеличить диапазоны которые ссылаются на второй лист с таблицей замены
Лень двигатель прогресса, доказано!!!
 
Там формула мсассива,  если просто увеличить диапазон,  то формула перестаёт работать
 
Олег Орлов, что мешает изменить диапазоны и ввести её заново как массивную
Лень двигатель прогресса, доказано!!!
Страницы: 1 2 След.
Читают тему (гостей: 2)