Страницы: 1
RSS
поиск частичного совпадения данных в excel, ПОИСК СОВПАДЕНИЯ ЗНАЧЕНИЙ В EXCEL
 
Добрый день,
Помогите пожалуйста. Перелистала много темок, но не получается сложить формулу под мои нужды.

Дано - колонки с арт ID и EAN код.( около 20000 позиций). В пустую ячейку сканером сканируется реальный штрих код на товаре который длиннее того что введен в системе, так как содержит доп.инфо.

Как составить формулу чтоб сканируя большой штрих код он находил в нем тот нужный короткий штрих код и подтягивал  его и арт ID

Сканер сканирует так ]C1010739213080023420121123031517260314103113  а в системе ЕАН введен так 07392130800234
Но коды разные, нет одного алгоритма что обязательно впереди будет такая комбинация цифр и такое колличество ненужных знаков.
Может быть и так 0106438129514575172712151022Y549E3 а в системе будет 6438129514575

Но задача такая чтоб сканируя сканером длинный код он сразу находил из списка коротких ( из 20000) тот короткий который содержится в  этом длинном.

Находить по одному короткий в списке длинных вроде как находит. но мне нужно наоборот. Находить по одному длинный в имеющемся списке коротких.

Спасибо. Буду рада и признательно если ктото поможет.  
 
agnesa_d, так =VLOOKUP("*"&E2&"*";$A$2:$B$23;2)
 
=ПРОСМОТР(;-ПОИСК($E$2:$E$22;$A11);$F$2:$F$22) , для 11-ой строки

Но, формула по справочнику в 20к строк просто подвиснет, имхо
Для вашей задачи Power Query хорошо подойдет. Вот я себе этот код приспосабливал. Источник справочника поправить. Ну и разобраться. На лету оно конечно подставлять не будет, это нужно жать  "обновить".
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Данные"]}[Content],
    #"Строки с примененным фильтром" = Table.SelectRows(Источник, each ([Дата] <> null)),
    #"Измененный тип" = Table.TransformColumnTypes(#"Строки с примененным фильтром",{{"Дата", type date}}),
    categories_rec = [ src  = Excel.Workbook(File.Contents("C:\Справочник.xlsx"), null, true){[Item="Вендор",Kind="Table"]}[Data],
    sort = Table.Sort ( src, ( s, c ) => Value.Compare ( Text.Length ( s[Сравнение] ), Text.Length ( c[Сравнение] ) ) ),
    recs = List.Buffer ( Table.ToRecords ( sort ) ) ][recs],
    Подстановка =  Table.AddColumn (#"Измененный тип", "Вендор0", each    
      List.Last ( List.Select ( categories_rec, ( x ) => Text.Contains ( [Товар], x[Сравнение], Comparer.OrdinalIgnoreCase ) ) )[Вендоры]? )
in
    Подстановка
Изменено: Sergey Stoyanov - 18.10.2023 17:02:01
 
Цитата
написал:
agnesa_d , так =VLOOKUP("*"&E2&"*";$A$2:$B$23;2)
тогда он ищет ячейку Е2 в А колонке.
а мне надо наоборот. Найти А2 потом А3 потом А4... в Е колонке
Я теперь уже не понимаю... так можно?  
 
Цитата
написал:
=ПРОСМОТР(;-ПОИСК($C11;$E$2:$E$22);$F$2:$F$22) , для 11-ой строки
Я наверно не очень понятно вставила пример.в файле

нужно искать не ячейку C11 в Е и F колоннах. А  А11 ячейку искать. нужно найти какой короткий ЕАН из Е колонки и в колонке С должна стоять формула чтоб А11 нашел себя в Е колонке и выдался в С11 ячейке  С и В ячейки я заполнила как пример, как должно выглядить.  
 
Прошу прощения, давно не пользовался подстановкой формулой , попутал когда писал. Исправил в сообщении  формулу как нужно - поиск вхождения из массива $E$2:$E$22 в А11
Изменено: Sergey Stoyanov - 18.10.2023 17:05:38
 
Цитата
написал:
Прошу прощения, давно не пользовался подстановкой формулой , попутал когда писал. Исправил в сообщении  формулу как нужно - поиск вхождения из массива $E$2:$E$22 в А11
УХ ТЫЫ!!! кажется работает. завтра потренируюсь. А пока что примного благодарствую.  
 
Цитата
Sergey Stoyanov написал:
формула по справочнику в 20к строк просто подвиснет,
- вполне может быть.
Можно кроме PQ применить VBA - загнать справочник в словарь (можно публичный если для UDF), затем циклом по длинному номеру искать 13/14 символов на наличие в словаре.
Страницы: 1
Наверх