Страницы: Пред. 1 2
RSS
Наиболее быстрое сравнение двух огромных списков
 
Цитата
Djinn написал:
Только конструктором такое сопоставление можно провести?
Честно говоря не знаю, в основном код пишу сам в расширенном редакторе - так проще.
 
Off
Цитата
Андрей VG написал:
в расширенном редакторе - так проще.
Просто надо признаться, что мышку отобрали, чтоб не клацал :-)
По вопросам из тем форума, личку не читаю.
 
БМВ,.в редакторе действительно проще. Визуалка же удобна чтобы выполнить какую нибудь муторную операцию типа доступа к таблице из файла или ручного приведения типа столбцов. Имхо, оптимально их комбировать.

P. S. Кто нибудь знает как отключить генерацию гееславных имён типа #"Я щёлкнул три раза мышкой"? Задалбывает из предварительно сделанного в визуалке запроса вычищать эту дрянь.  
Изменено: Alexey_Spb - 03.02.2019 16:34:28
 
Цитата
Alexey_Spb написал:
БМВ,.в редакторе действительно проще.
Алесей, думаю Андрей понял , что я подразумевал. :-)
По вопросам из тем форума, личку не читаю.
 
Дйинн, буду краток: можно, но это тот случай, когда ручками в редакторе проще. ;)
Вот горшок пустой, он предмет простой...
 
свою лепту внесу))) я с похожей задачей так справлялся. перед тем как копировать range в массив, я обе области сортировал посредством автофильтра

для чего: при поиске позиции из первого массива не надо прогонять было  второй массив сначала до конца
 
Цитата
manat78 написал:
для чего: при поиске позиции из первого массива не надо прогонять было  второй массив сначала до конца
При использовании словарей это не требуется.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
При использовании словарей это не требуется.
пошел гуглить про словари!
 
Цитата
manat78 написал:
пошел гуглить про словари!
Гуглите про "ArrayList" ...  :)
 
ArrayList медленнее. Но можете померить.
 
Цитата
manat78 написал:пошел гуглить про словари!
Про словари можно почитать вот тут
"Все гениальное просто, а все простое гениально!!!"
 
Ленивый вариант сугубо на VBA. На миллионе строк при 5000 отличных данных отработал за 23 секунды. А если допилить Quick Sort для сортировки двух столбцов (ну, нет времени разбирать), чтобы убрать сцепку строк, а потом Split для разделения ключа и номера таблицы, то можно и быстрее. По крайней мере формирование FKeys и сортировка занимают 15 секунд.
Updated.
Переделал. Подправил ошибку с выводом. Отрабатывает за 13 секунд. Power Query и его собрат - повержены :)
Изменено: Андрей VG - 04.02.2019 21:13:56
 
Цитата
Андрей VG написал:
Power Query и его собрат - повержены

Тогда вообще не вижу преимуществ PQ. По скорости грамотному коду уступает (правда кода меньше), чтобы сделать на нем что-то серьезное все равно надо кодить, еще и на другом языке, который сперва надо выучить.....
 
Цитата
Djinn написал:
Тогда вообще не вижу преимуществ PQ
А зря, весьма интересный инструмент, позволяющий использовать типовые реализации базовых алгоритмов, которые на VBA нужно писать. Такой развёрнутой библиотеки, как например в C# нет. Опять же, если бы сюда заглянул Виталий BedVit, то он бы закодировал задачу на C++ и уделал бы VBA под орех. Тогда что - всем на C++? Но помимо скорости выполнения, для типовых как правило до 50000 строк разницы по скорости нет, есть ещё скорость и простота  реализации. На Power Query она для многих типов задач выше, чем на VBA.
Так что не ворчите как Kuzmich. Есть у меня подозрение, что для вас основная проблема только в этом
Цитата
Djinn написал:
который сперва надо выучить
Я например, с удовольствием пользуюсь Power Query и другим советую. При базовых знаниях алгоритмики переход не столь сложен, как кажется.
Изменено: Андрей VG - 04.02.2019 23:43:51
 
Кстати, если эти "номенклатуры" всегда имеют фиксированный текстовый префикс, а далее отличаются только числом, то подойдет промежуточная числовая сортировка. Попробую по памяти набросать такой сортер.

Написал...
Время обработки (сепарация стрингов + сортировка чисел):
Скрытый текст

Тестер:
Скрытый текст

Сортер:
Скрытый текст

П.С.: В случае применения к данной задаче лучше чтобы процедура возвращала массив индексов вместо значений во входном массиве.
Изменено: Anchoret - 05.02.2019 04:57:28
 
Ну и в продолжении темы с числовой сортировкой (хотя ТС так и не отписался всегда ли числа идут после определенного префикса в номенклатурах или нет).
Тестер (без выгрузки на лист):
Скрытый текст

Процедуры:
Скрытый текст

Результаты по времени (меняя значения переменной kf в тестере можно поэкспериментировать со временем сортировки. для равномерного числового распределения оптимальный вариант - 0,5):
Скрытый текст
Изменено: Anchoret - 06.02.2019 05:00:19
 
Цитата
Андрей VG написал:
если бы сюда заглянул Виталий BedVit, то он бы закодировал задачу на C++ и уделал бы VBA под орех
Всем Здравия! Андрей привет!  
Цитата
Djinn написал:
Отрабатывает за 13 секунд.
Думаю в секунду уложусь. Может в половину.
Цитата
Андрей VG написал:
Тогда что - всем на C++?
да, здесь много факторов. Время разработки, стоимость/трудоемкостт, выхлоп. На С++ все это максимально. Но всем ли это нужно?) Каждый инструмент в своей нише. Вот Андрей, к примеру спец по РQ, РР. Я к примеру, эти инструменты знаю не на таком отличном уровне (в РР создал и поддерживаю небольшую базу с несколькими джойнами и таблицами подгрузки из SQL и листов Еxcel, пару десятков расчетных полей). В РQ вообще не работаю. Но однако, у Андрея получается шедевры) Достаточно быстро, дёшево и с нормальным выхлопом. Здесь, на форуме, много спецов, кто то в VBA очень здорово прокачен, кто тов формулах - везде своя ниша) Мне нравится скорость кода. Кому-то скорость разработки к примеру. Но, обычно, все зависит от поставленной задачи. Какова цель.
«Бритва Оккама» или «Принцип Калашникова»?
 
В тему подробно не вникал, если очень нужно будет быстрое решение, гляну.
Сейчас занят тесселяцией, рендерингом и шейдерами.
Изменено: bedvit - 06.02.2019 10:36:17
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Nordheim написал:
Про словари можно почитать вот  тут
Спасибо
Страницы: Пред. 1 2
Наверх