Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Поиск совпадений по позициям в тексте в столбце.
 

Прошу помощи в решении задачи.

Нужно по входным номерам определить направление вызова (маршрут для него). Столбец  C – входящие номера (исходные данные). Т.е если приходит вызов на номер 1075566 нужно проверить столбец B на совпадения, начиная полностью по совпадению, затем с младшего символа (107556х) и если нет совпадений отбрасывать еще по символу и тд , пока не найдется первое совпадение . Таким образом для 1075566 подходит маршрут 77 с критерием отбора 105. Т.е. в столбец  D4 функция должна вернуть значение 77.

Думаю, что нужно применять ВПР, но как реализовать отбрасывание разрядов (6 итераций для каждого номера) -  не знаю.

Все номера в текстовом формате, т.к если числа , то в номерах таки как 001хххх  нули будут отброшены.

Изменено: Rom251 - 5 Окт 2018 09:19:07
 
чет пример совсем корявенький надо показывать данные по структуре и отображению  аналогичные с которыми работаете а не сварганеный на коленке пример
Лень двигатель прогресса, доказано!!!
 
Цитата
Rom251 написал:
Таким образом для 1075566 подходит маршрут 77 с критерием отбора 105.
Точно? А мне кажется, по Вашей логике подходит маршрут 55.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Да, моя ошибка. верно - 55    
77 будет для 10564
Изменено: Rom251 - 9 Окт 2018 14:38:39
 
Rom251, так вариант (но сортировка от меньшего к большему по столбцу B )
Изменено: a.i.mershik - 5 Окт 2018 09:42:25
 
Спасибо большое!  то что нужно, порядок строк мне не важен.  Буду теперь разбираться в работе формулы  
 
Rom251, ну лучше добавить доп столбец с ДЛСТР() и по нему сделать сортировку от меньшего к большему...
Изменено: a.i.mershik - 5 Окт 2018 09:46:59
 
чехарда с текстом и не текстом а так
=INDEX(A:A;MATCH(LEFT(C2;1+LEN(C2)-MIN(IF(ISNUMBER(MATCH(LEFT(C2;1+LEN(C2)-ROW(A$1:INDEX(A:A;LEN(C2))));B:B;));ROW(A$1:INDEX(A:A;LEN(C2))))));B:B;))
 
Спасибо, попробую. Буду разбираться, сложная конструкция для начинающего  :cry:  
 
Rom251,
нужно чтоб данные были или текстовые или числовые
внутри скрин на котором видно чт о105  - это текст, а остальное числа.
для чисел формула чуть другая
=INDEX(A:A;MATCH(--LEFT(C2;1+LEN(C2)-
MIN(IF(ISNUMBER(MATCH(--LEFT(C2;1+LEN(C2)-ROW(A$1:INDEX(A:A;LEN(C2))));B:B;));ROW(A$1:INDEX(A:A;LEN(C2)))))
);B:B;))
 
данные будут только как текст, т.к номер телефона может начинаться на 0, а они программой будут отброшены.
 
Цитата
Rom251 написал:
данные будут только как текст
тогда так
=INDEX(A:A;MATCH(LEFT(C2;1+LEN(C2)-
MIN(IF(ISNUMBER(MATCH(LEFT(C2;1+LEN(C2)-ROW(A$1:INDEX(A:A;LEN(C2))));B:B;));ROW(A$1:INDEX(A:A;LEN(C2)))))
);B:B;))
 
Спасибо, работает.  Второй день пытаюсь разобрать логику работы алгоритма, не получается.  
Страницы: 1
Читают тему (гостей: 1)
Наверх