Сопоставление трех и более файлов

Автор stakantin, 01.08.2012, 18:49

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

stakantin

 :'(
Дорогие форумчане , нужна помошь в фунции впр!

Задача заключается в следующем:

есть 3 и более прайсов от разных представителей, в каждом от 1000 до 3000 наименований.
есть наименования которые совпадают ( но не идеально, для примера "broun100 и блендер BROUN 100" ), а есть которые встречаются только в одном прайсе.
у каждого наименования есть определенный артикул , в основном стоит в соседней ячейке.

нужно сопоставить эти прайсы и выбрать номенклатуру которая встечается единажны плюс номенклатуру которая повторяется( но записать ее с самой низкой ценой)
и записать в соответствующие ячейки артикул, наименование и цену.

в идеале должен получится файлик с таблицей в виде:

артикул: наименование: цена:
0001          блендер           xxxx$
000w          чайник             xxxx$
ds30           стиралка         xxxx$
3we5          холодильник    xxxx$

буду крайне благодарен за подробно описаное решение, возможно денежное вознаграждение.

во вложении 3 файла примера прайсов и 1 тот что должен получиться ( примерный)

IKor

Если речь идет о разовой (или относительно редкой операции), то я бы посоветовал скопировать на один лист все диапазоны, удалить лишние колонки, отсортировать по артикулу и удалить лишние строки.
Последнее можно несколько упростить при помощи дополнительного столбца, в котором сравнивать артикулы текущей и предыдущей строки, затем заменить результаты сравнения их значениями (скопировать и вставить_только_значения), отсортировать таблицу по дополнительному столбцу и удалить лишние строки.

Если же речь идет о более-менее регулярном добавлении новых или изменении имеющихся прайсов, то имеет смысл сгенерировать столбец артикулов (например по описанному выше способу), рядом с ним создать столбцы цен из каждого отдельного прайс-листа (a-la ВПР), а затем выбирать наименьшую из рассматриваемых цен. Кроме того, в каждый из отдельных прайсов стоит прикрутить проверку наличия артикулов в общем списке - иначе есть риск пропустить новые артикулы.

Отдельно нужно сказать о том, что формула ВПР("broun*100";Таблица;Номер_Столбца;0) найдет как строки "broun 100", так и "BROUN100". Для более серьезных случаев расхождения артикулов может потребоваться корректировать прайс-листы.

stakantin

Собственно регулярность даной манипуляции довольно таки велика, 2-3 раза в неделю.
Четыре прайса перебирать в ручную и сводить к общему виду нереально , учитывая что в прайсах по 2-3 тысячи наименований.
поэтому нужно максимально автоматизировать сию операцию и свести максимум к копированию содержимого прайсов на один общий , и сравнивать уже то что имеется. Встает вопрос о удалении дубликатов не полностью совпадающих по названию , аля "Broun300" "Broun-300" "Блендер Broun 300" и тому подобное (естественно оставляя в живых только наименования с самой низкой ценой)

IKor

На самом деле принципиален вопрос частоты обновления номенклатуры, а не цен:
1. Тем или иным образом создать полный перечень уникальных артикулов (или уникальных названий) продукции  - Один раз.
2. Для всех прайсов обеспечить проверку наличия всех артикулов в полном списке, например так =ЕЧИСЛО(ПОИСКПОЗ("*"&Текущий&"*";Полный_перечень;0)) - Постоянно.
3. Для артикулов, отсутствующих в полном перечне: либо дополнять полный перечень, либо менять артикул в прайсе - По мере необходимости
4. Подтягивать в таблицу с полным перечнем цены из отдельных прайсов при помощи функций a-la ВПР(_) и затем проводить сравнение по цене и выбирать лучшую: МИН() - На постоянной основе

Относительно вопроса
Цитата: stakantin от 02.08.2012, 15:45
Встает вопрос о удалении дубликатов не полностью совпадающих по названию , аля "Broun300" "Broun-300" "Блендер Broun 300" и тому подобное (естественно оставляя в живых только наименования с самой низкой ценой)
Первое: Если в полном перечне артикулов записать строку "*broun*300", то функция ВПР(_) вернет цены изо всех прайсов при любом указанном написании. Для формирования строки для поиска "*broun*300" и образцово показательной строки прайса "Блендер Broun 300" рекомендую завести в полном перечне отдельные дополнительные столбцы.
Обратите внимание на то, что возвращаться всегда будут данные из первой найденной подходящей строки прайса - т.е. если в одном прайсе блендоров  Broun 300 больше одного, то для всех них будет вытащена в полную таблицу одна цена - первая.

Второе: Обратная операция по проверке наличия всех указанных вариантов написания артикулов в полном перечне артикулов в общем случае невозможна. Могу предложить только в каждом прайсе завести дополнительный столбец для ручного указания факта, что текущий артикул прайса находится из общей таблицы.