Как можно при помощи VB проверять изменения в прайс листах?

Программирование на Visual Basic for Applications
VePr
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 7
Зарегистрирован: 21.06.2005 (Вт) 12:08

Как можно при помощи VB проверять изменения в прайс листах?

Сообщение VePr » 06.07.2005 (Ср) 14:37

Люди добрые! Поможите кто чем может!!!

Я думаю, этот вопрос будет многим интересен. Ежедневно получаю по 20-30 прайсов от поставщиков. В экселе. Ежедневно приходится проверять их - цены могут менятся по два раза на дню.

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.07.2005 (Ср) 15:01

Есть ли какой-нибудь однозначный идентификатор (код, артикул или что-нибудь еще)? Если нет, то автоматизировать не получится.
Lasciate ogni speranza, voi ch'entrate.

VePr
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 7
Зарегистрирован: 21.06.2005 (Вт) 12:08

Сообщение VePr » 06.07.2005 (Ср) 15:24

есть код товара
прайс выглядит так:
|код|наименование|гарантия|цена|наличие кол-во|

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.07.2005 (Ср) 15:33

Коды товара сквозные у всех поставщиков?

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

Суть следующая.
Вначале создаешь сводную таблицу с колонками "Номер товара", "Название товара", "Цена поставщика 1", "Цена поставщика 2", ..., "Цена поставщика N".
Затем создаешь массив такого типа:
Код: Выделить всё
Type GoodType
  Code As String
  Name As String
  Row As Long
End Type
Dim arrGoods() As GoodType

Code - это код товара, Name - его название, Row - в какой строке сводной таблицы он будет содержаться.

Затем по очереди проходишься по всем файлам прайсов, считываешь строки и ищешь номер элемента arrGoods(). Если в массиве не найден товар с таким кодом, то добавляешь его в таблицу и присваиваешь очередной номер строки сводной таблицы.
Lasciate ogni speranza, voi ch'entrate.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 06.07.2005 (Ср) 16:21

Мэйби можно через ВПР()? Без всякого ВБА?
И еще, если нет кода, но названия меняются не сильно, была у меня функция нечеткого сравнения строк...

VePr
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 7
Зарегистрирован: 21.06.2005 (Вт) 12:08

Сообщение VePr » 06.07.2005 (Ср) 16:28

Что такое ВПР()? функция нечеткого сравнения строк
напиши пожалста как реализовать оба способа

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 06.07.2005 (Ср) 16:41

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

Что касается нечеткого сравнения: это функция, которая по двум строкам говорит не "равны или не равны", а "насколько похожи" (в процентах, 100% - полное совпадение, но может быть ответ 98%, и это значит, что строки отличаются очень мало). Соответственно, если в названии товаров поменялась одна буковка, ВПР работать перестанет, но функция нечеткого сравнения даст ответ, что строки очень похожи. Здесь, правда, уже без макроса не обойтись.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.07.2005 (Чт) 8:47

ИМХО, в данном случае (что некоторые позиции могут отсутствовать в первом прайсе и присутствовать в остальных) без VBA не обойтись.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 62

    TopList