Хочу уйти от SQL запроса, который легко и приятно писать, но который слишком медленно выполняется.
Основная мысль - загнать в массив много (19) несмежных столбцов умной таблицы, дабы потом глумиться над ним, различные фильтры применяя с использованием временным словаря.
Вот я и проверю, кто победит, SQL или массивно-словарный монстр. Жаль, что нельзя взять в массив только нужные столбцы, придётся пихать в него всю таблицу.
Мартын, не советую Evaluate — помимо длины строки, у него, вроде ещё косяки есть. К тому же запись короче, но на больших объёмах обычному циклу проигрывает. Не могу найти тему, где мы обсуждали это…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Андрей_26 написал: их можно взять в словарь или коллекцию
18 столбцов в один словарь? Как? Словарь вроде как содержит ключ и значение, то есть одну пару (по сути два столбца), а не 18. Коллекции вообще не знаю что за звери. Что им соответствует в Паскале или С?
Мартын написал: Словарь вроде как содержит ключ и значение
не значение а элемент, а им может быть все что угодно, даже другой словарь.
Цитата
Мартын написал: Коллекции вообще не знаю что за звери
вы ж ими почти постоянно пользуетесь. Например коллекция листов. Но они могут быть и пользовательскими, при этом в определенных случаях работает во много раз быстрее. http://www.excelworld.ru/forum/10-41782-288511-16-1575834204 + работает и на маке тоже.
Быстее словаря+массив на умной таблице размером 40000Х56 во сколько раз? Если речь о 2х-3х секундах, то мне не принципиально. Сейчас SQL запросы отрабатывают за 30 секунд. Мне кажется долго, вот я и заморочился.
Цитата
БМВ написал: Но они могут быть и пользовательскими
почитал по быстрому о коллекциях, никаких преимуществ ДЛЯ СЕБЯ по сравнению со словарями не выявил.
Ещё одна странность. По наводке многоуважаемого БМВ запихал массив с словарь. То есть каждый элемент словаря это одномерный массив из 25 элементов. Захотел выгрузить массив Items на лист и столкнулся с ерундой. Если написать так: то выгружается пустота (пустые ячейки на весь размер массива)
вы пытаетесь выгрузить коллекцию всех элементов словаря (одномерный массив элементов, каждый из которых представляет собой также одномерный массив) на лист МАХОМ. По-моему это вообще должно выдать ошибку, либо я чёт не понял • Обычно перед выводом на лист используется цикл, в котором собирается "двухмерный" массив (1 To Nrow, 1 To Ncol) для этого самого вывода… • Application.Transposeимеет ряд ограничений и простой цикл пересбора будет надёжнее (и вряд ли медленнее). Получается штатный метод при двойном применении как-то преобразует данные, что они становятся пригодны для выгрузки, но ЧТО именно он меняет я не знаю — я бы собрал массив сам и не парился
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄