Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Поиск похожих значений в двух таблицах

Автор Иван Балабин, 01.08.2017, 10:44

« назад - далее »

Иван Балабин

Здравствуйте.

Имеется таблица. К сожалению, на значительное время её заполнение было неподконтрольно мне. От чего возникли проблемы. На базе таблицы заполняются данные в 1С.
В чём проблема? Автоматическое внесение данных в 1С сделано совсем недавно (до этого не было программиста). И данные полтора года вносились руками. И занималось этим человек 5... Ну и как рука на кнопки легла, так теперь 800 из 1200 строк не совпадают по названию. Дело в том, что в таблице пришлось добавить несколько столбцов, а так же изменить часть данных, а вот проверять вручную 1200 строк в 1С не велико желание. Можно ли каким-то образом, имея выгрузку из 1С в виде exel таблицы и исходную таблицу, сравнить столбцы А и добавить в исходную (или третью) таблицу столбец с номером строки из выгрузки? Но при этом могут присутствовать русские буквы вместо английских, где-то недоставать, а где-то наоборот присутствовать пробелы? Проблема ещё в том, что, могут строки быть видоизменены - например, Audi A3 Coupe в одной таблице и Audi Coupe A3 (или просто Audi A3 или Audi Coupe) в другой... И если ещё предварительно я смогу прогнать таблицы на наличие русских символов и лишних\недостающих пробелов, то вот с перестановкой символов не знаю, что делать...

Голова уже пухнет. Программист на просьбы о помощи не реагирует, да и знания либо удачно скрываются, либо они очень узко направлены... А я не понимаю, в каком направлении копать.

Посадить бы тех, кто этим занимался, руками всё перебирать, да они с нами больше не работают...


runner

Иван, эмоции - глушим, пример - выкладываем, по примеру объясняем, что есть и как должно быть.

Иван Балабин

Первый файл - часть моей таблицы. Второй - часть таблицы-выгрузки из 1С. Третий - приблизительно то, что надо получить.

runner

В "Результат" или в "Выгрузку"
=ПОИСКПОЗ(A2;'[Справочник по моделям — копия.xlsx]TDSheet'!$B$1:$B$21;0)
То, что совпадает - показывает.
Если по наименованиям прогнать "СЖПРОБЕЛЫ()", то может быть ещё что-то добавится.
С остальным, боюсь, проще руками. Бывают варианты с поиском по нечёткому соответствию, но при таком написании, едва ли поможет.
Были бы артикулы - было бы много проще :)

Иван Балабин

Спасибо. Но в том и дело, что совпадающих строк не более 30% от общей массы. Так что руками будет долго.
Про артикулы вспомнили, когда обратно на меня скинули таблицу, т.е. уже спустя полтора года после начала заполнения... Понятно, что в будущем они появятся, но сейчас надо синхронизировать таблицы. А пока не понятно как.

Если не будет вариантов, то буду отфильтровывать группами по производителю и сравнивать глазами...

runner

Полный справочник по моделям в котором Артикул и Наименование отдельными столбцами есть? Или, хотя бы, столбец наименований, в котором у артикула есть определённое место, в начале или в конце, отделённое пробелом.
Asus ZenFone 3 Max ZC553KL   - артикул справа?

Иван Балабин

#6
ZC553KL - это не артикул, это часть наименования. Например, существует Asus ZenFone 3 Max в 3-х модификациях как минимум. Ну и "Asus ZenFone 3 Max ZC553KL" - это лишь одна из них. И если вынести этот буквенно-числовой код в отдельный столбец, то в столбце наименований получим три одинаковых строки. Это смертельный номер... для некоторых сотрудников. "Столбец наименований, в котором у артикула есть определённое место" по сути тоже надо получить. Я ещё не привёл названия к общему виду. И это уже руками придётся. Но даже сделав это столкнусь с проблемой. Она заключается в том, что у каждого производителя свой вариант обозначения моделей. И даже почти всегда у одного производителя вариантов несколько. К примеру, у ASUS`а встречается ZC553KL, Z300C, Z300KNL, G500KL (количество цифр неизменно, а буквы подводят), у Alcatel`я же как правило это четыре цифры (плюс буква, несущая иформацию о некоторой особенности, значения для нас не имеет) - 5022D, у Samsung`а от поколения к поколению обозначения меняются - стабильности и чёткости ни какой. У некоторых производителей такой код неизвестен или вообще несущественнен (например, любой iPhone). Иногда встречается же, что в строке бывает два, три и более таких кодов, так как с нашей точки зрения эти модели телефонов не отличаются. А иногда бывает так, что в строке несколько названий, между которыми есть коды. Так что думаю, что это неверное направление.
В полном справочнике на данный момент есть ещё столбцы, но они либо пока пустые, либо не несут уникальной для каждой строки информации.

Тут и правда, вероятно, не обойтись без поиска по нечёткому соответствию. Но я, почитав на эту тему, осознаю, что это не для моего понимания...

runner

То есть ZC553KL может присутствовать без дополнительных символов в трёх разных товарах? Как их различать?

"Столбец наименований, в котором у артикула есть определённое место" - я имел ввиду, есть ли такая таблица от поставщика?
Если да, то, по вхождению артикула в тексте названия, можно сопоставить две таблицы.
Количество букв/цифр в артикуле(обозначении моделей), по большому счёту, значения не имеет.
Желательно, конечно, чтобы артикулами были уникальные значения, хотя бы внутри одного бренда, тогда связка бренд+артикул будет уникальной и с ней можно работать.
Я имею дело с автозапчастями и подобные проблемы мне более чем известны.
Посмотрите приложенные файлы, может, что-то поможет.

Иван Балабин

"То есть ZC553KL может присутствовать без дополнительных символов в трёх разных товарах? Как их различать?" Нет. Только в одном. Но если ZC553KL вынести в отдельный столбец, то будет три Asus ZenFone 3 Max`а. Это значительно увеличит риск человеческой ошибки. И вместо одних данных будут использованы другие.
И опять же нет систематизации чёткой даже внутри одного производителя... 
"я имел ввиду, есть ли такая таблица от поставщика?" - нет, так как и поставщиков у нас нет  ;D Мы сами производим.
Посмотрю уже завтра, сегодня с заказами надо закончить. Спасибо.

IKor

Боюсь, что с автоматизацией помочь не смогу - но есть опыт ручной проработки подобной задачи...
В свое время мне сильно помогал _автофильтр_, позволяющий вывести строки таблицы по текстовому фрагменту.
В качестве альтернативы (возможно это окажется более удобным): с помощью условного форматирования можно подсвечивать ячейки, содержащие заданное значение (или фрагмент текста).
============
В качестве полуавтоматической подсказки:
каждую ячейку первой таблицы разбить на отдельные слова, записанные во вспомогательных столбцах.
затем для каждого фрагмента посчитать количество вхождений во второй таблице
это должно подсказать ключевые слова автофильтра второй таблицы (о котором я писал выше)...