Пардон, cовсем не знаю синтаксис vba))) напишу как представляю.)))
1.Ячейки строки услуг загнать в массив: Замена аккумулятор Nokia 3230 = Массив1 {a,b,c,d} количество элементов массива определяется количеством ячеек в строке, каждому элементу присваивается значение ячейки. где : а = "замена" b="аккумулятор" c="nokia" d ="3230"
2.Загнать ячейки строки запчасть в массив: доп. аккумулятор Nokia 3230 = Массив2 {a,b,c,d} количество элементов массива определяется количеством ячеек в строке, каждому элементу присваивается значение ячейки. где : а = "доп." b="аккумулятор" c="Nokia" d ="3230"
3.Ячейки строки запчасть2 загнать ячейки в массив: не аккумулятор Nokia 3125 = Массив3 {a,b,c,d} количество элементов массива определяется количеством ячеек в строке, каждому элементу присваивается значение ячейки. где : а = "не" b="аккумулятор" c="Nokia" d ="3125"
4. И так со всеми строками в столбце запчасть.
5.Глобальные переменные
[vba]
Код
i=0 p=0 b=0 'количество элементов массива Массив2 m=0 'количество совпадений
[/vba]
6.Цикл
[vba]
Код
b = количество элементов массива Массив2 if Массив1(i) <> Массив2(p) 'где i и p порядковые номера элементов массивов then: p=p+1 Запустить цикл повторно Else: if i <> количеству элементов массива Массив1 then: MассивСопадений(i)=Массив2(p) i=i+1 m=m+1 if b>=3, m>=3 then: проставляем цену в строке услуги и выводим значения элементов из массива MассивСопадений в ячейки правее. это слова совпадения. и обнуляем глобальные переменные Код i=0 p=0 m=0 b=0 Else: Запустить цикл повторно endif Else: Запустить цикл повторно только вместо Массив2 использовать Массив3, и так далее перебирать. Двумерным массивом наверное делается. endif endif
[/vba] Ещё раз извиняюсь за косноязычность))).
Буду рад, если найдутся люди готовые помочь реализовать такую затею.
Пардон, cовсем не знаю синтаксис vba))) напишу как представляю.)))
1.Ячейки строки услуг загнать в массив: Замена аккумулятор Nokia 3230 = Массив1 {a,b,c,d} количество элементов массива определяется количеством ячеек в строке, каждому элементу присваивается значение ячейки. где : а = "замена" b="аккумулятор" c="nokia" d ="3230"
2.Загнать ячейки строки запчасть в массив: доп. аккумулятор Nokia 3230 = Массив2 {a,b,c,d} количество элементов массива определяется количеством ячеек в строке, каждому элементу присваивается значение ячейки. где : а = "доп." b="аккумулятор" c="Nokia" d ="3230"
3.Ячейки строки запчасть2 загнать ячейки в массив: не аккумулятор Nokia 3125 = Массив3 {a,b,c,d} количество элементов массива определяется количеством ячеек в строке, каждому элементу присваивается значение ячейки. где : а = "не" b="аккумулятор" c="Nokia" d ="3125"
4. И так со всеми строками в столбце запчасть.
5.Глобальные переменные
[vba]
Код
i=0 p=0 b=0 'количество элементов массива Массив2 m=0 'количество совпадений
[/vba]
6.Цикл
[vba]
Код
b = количество элементов массива Массив2 if Массив1(i) <> Массив2(p) 'где i и p порядковые номера элементов массивов then: p=p+1 Запустить цикл повторно Else: if i <> количеству элементов массива Массив1 then: MассивСопадений(i)=Массив2(p) i=i+1 m=m+1 if b>=3, m>=3 then: проставляем цену в строке услуги и выводим значения элементов из массива MассивСопадений в ячейки правее. это слова совпадения. и обнуляем глобальные переменные Код i=0 p=0 m=0 b=0 Else: Запустить цикл повторно endif Else: Запустить цикл повторно только вместо Массив2 использовать Массив3, и так далее перебирать. Двумерным массивом наверное делается. endif endif
[/vba] Ещё раз извиняюсь за косноязычность))).
Буду рад, если найдутся люди готовые помочь реализовать такую затею.acidnoise
Выложенный файл посмотреть не смог (дома у меня только Excel 2003), но смотрел предыдущие попытки здесь и на Планете. Первоначальный заход из этой темы мне показался более перспективным. Поэтому, для начала, предлагаю вариант решения, построенный на его основе. Список запчастей на Sheet2 урезал для компактности. Надеюсь, полный список ещё у вас.
Выложенный файл посмотреть не смог (дома у меня только Excel 2003), но смотрел предыдущие попытки здесь и на Планете. Первоначальный заход из этой темы мне показался более перспективным. Поэтому, для начала, предлагаю вариант решения, построенный на его основе. Список запчастей на Sheet2 урезал для компактности. Надеюсь, полный список ещё у вас. Формуляр
Выложенный файл посмотреть не смог (дома у меня только Excel 2003), но смотрел предыдущие попытки здесь и на Планете. Первоначальный заход из этой темы мне показался более перспективным. Поэтому, для начала, предлагаю вариант решения, построенный на его основе. Список запчастей на Sheet2 урезал для компактности. Надеюсь, полный список ещё у вас.
Спасибо. Прикрутил свой исходник, всё работает замечательно. Попытался прикрутить ещё повторый впр по модели к найденым соответствиям, что-то не получлось. Справку порою прикручу. Ваш метод селективный(применение уже нашлось, часть работы очень облегчил), т.е. 1 услуга для 1й модели, а что бы вы порекомендовали для массового определения стоимостей, что вы думаете о той логике которую я предложил для массового определения?
Выложенный файл посмотреть не смог (дома у меня только Excel 2003), но смотрел предыдущие попытки здесь и на Планете. Первоначальный заход из этой темы мне показался более перспективным. Поэтому, для начала, предлагаю вариант решения, построенный на его основе. Список запчастей на Sheet2 урезал для компактности. Надеюсь, полный список ещё у вас.
Спасибо. Прикрутил свой исходник, всё работает замечательно. Попытался прикрутить ещё повторый впр по модели к найденым соответствиям, что-то не получлось. Справку порою прикручу. Ваш метод селективный(применение уже нашлось, часть работы очень облегчил), т.е. 1 услуга для 1й модели, а что бы вы порекомендовали для массового определения стоимостей, что вы думаете о той логике которую я предложил для массового определения?acidnoise
а что бы вы порекомендовали для массового определения стоимостей, что вы думаете о той логике которую я предложил для массового определения?
ЦитатаМ.Жванецкий
Что бы я делал в экстренных случаях, в пиковых положениях? Я бы кушал ночью – это раз. Спал бы днем – это два.
Всё, что массовое, оно очень-очень небыстрое - как ни изголяйся. Задумайтесь крепко, как вы (или другой кто) собираетесь этим пользоваться? Будете визуально анализировать список на 10 000 строк? Можно ли получить нужный результат без массового определения?
А пока вы думаете на эту тему, я добью макрос индексирования списков на основе нечеткого сравнения строк. Должно работать быстрее и надёжнее предыдущего варианта. К тому же допускает ручную корректировку.
а что бы вы порекомендовали для массового определения стоимостей, что вы думаете о той логике которую я предложил для массового определения?
ЦитатаМ.Жванецкий
Что бы я делал в экстренных случаях, в пиковых положениях? Я бы кушал ночью – это раз. Спал бы днем – это два.
Всё, что массовое, оно очень-очень небыстрое - как ни изголяйся. Задумайтесь крепко, как вы (или другой кто) собираетесь этим пользоваться? Будете визуально анализировать список на 10 000 строк? Можно ли получить нужный результат без массового определения?
А пока вы думаете на эту тему, я добью макрос индексирования списков на основе нечеткого сравнения строк. Должно работать быстрее и надёжнее предыдущего варианта. К тому же допускает ручную корректировку.Формуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Понедельник, 24.03.2014, 17:05
Задумайтесь крепко, как вы (или другой кто) собираетесь этим пользоваться? Будете визуально анализировать список на 10 000 строк?
Дело в том, что всё это дело потом бы переводилось в csv и заливалось бы mysql для всяких дальнейших обработок. Но если никак, то никак. Вы и так очень помогли, спасибо. Селективный поиск будет использоваться в повседневной работе.
Задумайтесь крепко, как вы (или другой кто) собираетесь этим пользоваться? Будете визуально анализировать список на 10 000 строк?
Дело в том, что всё это дело потом бы переводилось в csv и заливалось бы mysql для всяких дальнейших обработок. Но если никак, то никак. Вы и так очень помогли, спасибо. Селективный поиск будет использоваться в повседневной работе.acidnoise
Ну так в MySQL это будет на порядок проще и быстрей! Я имею в виду отображение стоимости всех деталей для каждого сочетания услуга-модель. Нужно только предварительно проиндексировать список запчастей по справочникам моделей и услуг. Над этим сейчас и работаем...
Ну так в MySQL это будет на порядок проще и быстрей! Я имею в виду отображение стоимости всех деталей для каждого сочетания услуга-модель. Нужно только предварительно проиндексировать список запчастей по справочникам моделей и услуг. Над этим сейчас и работаем...Формуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Среда, 26.03.2014, 11:34
Ну вот, в первом приближении, готово, вроде. Сразу должен предупредить, что алгоритм игнорирует слова из одной буквы. Понимаю, что в данном случае это может быть критично. Работающее решение этой проблемы уже существует в другой версии. Сюда пока не встраивал, чтобы не усложнять отладку. Добавим, когда убедимся, что основной алгоритм работает как надо. Остальные пояснения внутри файла. Читайте, пробуйте, проверяйте на реальных объёмах.
Ну вот, в первом приближении, готово, вроде. Сразу должен предупредить, что алгоритм игнорирует слова из одной буквы. Понимаю, что в данном случае это может быть критично. Работающее решение этой проблемы уже существует в другой версии. Сюда пока не встраивал, чтобы не усложнять отладку. Добавим, когда убедимся, что основной алгоритм работает как надо. Остальные пояснения внутри файла. Читайте, пробуйте, проверяйте на реальных объёмах.Формуляр
Спасибо большое уважаемый за проделанную работу. Подскажите пожалуйста, что вы подразумевали под: 2. Фильтруем неиндексированные строки. Корректируем их вручную или дополняем справочники ?
Спасибо большое уважаемый за проделанную работу. Подскажите пожалуйста, что вы подразумевали под: 2. Фильтруем неиндексированные строки. Корректируем их вручную или дополняем справочники ?acidnoise