Просьба сдешних модераторов не принимать все сказанное на свой счет, я раньше обшался на многих форумах т.д. где были всякие идеотские правила, поэтому где бы я не услышал тему павил меня несет по инерции.
Немножко выскажусь. Можно на форумах часто услышать, правила, читайте правила. Правила это хорошо. А помните, намордники все носили, тоже было такое правило.. https://youtu.be/Ir7k8vpU1WE
Еще дополню, дополнительные столбцы сбивают правила, поэтому нужно не доп. столбцы, а делать дополнительный лист с формулами для УФ Ну или макросы, поскольку с этим УФ такая каша, я тут не спорю..
На всякий случай, такая мысль, буквально сейчас пришла.. Может как-то ускорит, может нет. Не использовать формулы и выражения внутри правил, а выносить их на лист в дополнитльные столбцы, и уже УФ делать опорой на эти столбцы, чтобы формулы не вычислялись внутри волатильного движка УФ, а УФ проверяло лишь результат этих формул, вычисленных на листе. В приложеном примере я сделал такую модификацию для столбцов A и M(L). Допустим у вас для столца L установлены такие правила
Код
<=F$3/2
>=F$3*2
>F$3*1,2
<F$3/1,2
Делаем дополнительные столбец (М) в котром протягиваем формулу
Jack Famous, привет. Я проверял на случайных данных, и там Коллекция оказывалась значительно быстрее на объемах 500 + тыс. Что впрочем объяснимо таким моментом, что у хеш таблицы (по сути это массив) dictionary четко фиксированый размер (~1000 элементов). Но если была бы возможность регулировать размер этой таблицы, то можно было бы получить бОльшую скорость dictionary на больших объемах. Скажу даже, я проверял сие, брал реализацию словаря The trick-а, делал в ней настраиваемый размер хеш-таблицы, и моя реализация в виде класса vba оказывалась быстрее Dictionary на объемах 500 т.+, что впроче все еще было медленей коллекции. В общем интересные моменты есть, хотя в сравнении, с UnorderedMap это все это конечно выглядит игрушками.. Если говорить о сортировке, то в коллекции, по логике она должна делать только хуже. Ведь коллекция использует логическое дерево, и при добавлении сортированых данных, постоянно будет расти только одна ветвь и получится так, то к самым первым элементам будет самый быстрый доступ, к последним - самый медленный..
mitya528 написал: действительно, в модуле книги был макрос, который запрещает удалять строки, ради теста удалил его и 120 тысяч строк почистились за за 1 минуту.
МатросНаЗебре написал: есть подозрение, что это пришло из других языков, где просто нельзя написать по-другому.
Да там похоже пытаются притянуть специфику разработки в какой-нибудь джаве, на vba. Объявление переменныв внутри цикла на vba не имеет смысла, поскольку не отражает реальный принцип работы и может только запутывать.
Zozel написал: проблема в том, что они отсканированы и могут иметь наклон
Это наверное ключевое. Думаю, единственное что тут можно посоветовать, распечатть PDF в растр, откорректировать наклон в растре в каком-нибудь профессиональном редакторе (в Кореле допустим) максимально точно. И по новой распознать. Но не будучи специалистом в таких дела, подозреваю, распознавание таблиц это чистейшее дерьмо в любом случае..
Там может все не так уж плохо, по крайне мере выглядит перспективно, то что JS, то что возможна какая-то тесная интеграция приложения с браузероми с их современными, продвинутыми отладчиками, это все интересно. Но в то же время отсутствие простого вывода аля MsgBox/print этопрям как явный звоночек, мессдаж прям, мол - да мы не такие как все, мы с причудами.. Там кстати где пример с дебаггером приводится, "Hello World" выводится на лист текстового редактора.. Странно все это..
Отвлеченно глядя на обшую картину, видно, что серьезный подход такой. Там у них и то и это и третье, десятое. С другой стороны а нафиг офису все эти pdf-просмотрщики, видеоплееры. Этого добра и так хватает, не лучше ли было бы сосредоточиться на самом офисе.. Такие мюсли короче..
Кстати забавная вещь, там команда print вызывает окно выбора пинтера. Да с msgboxom засада. Alert по идее должен быть доступен в режиме отладки. Там отладка с помощью браузера, но я например не смог её включить "с полпинка", и вообще
evgeniygeo написал: в первых трех темах помочь новому участнику научиться соблюдать правила форума
С другой стороны, повторюсь что лично мне это не особо-то и важно, но если бы я рассуждал так как буд-то мне это было бы важно, то я рассуждал бы.. в общем как-то так или не так, в общем все это не очень важно.. ))
bedvit, можно сделать просто в vba получить указатель разименовать, поработать с данными, и отпустить указатель, как буд-то ни чего не был, а менеджер памти Excel пусть делает что хочет. В общем на VBa все это не проблемма, главное знать структуру данных. Структура конечно не очен понятна, со всеми этими юнитами, нельзя ли ее привести к какому-то такому виду?
Код
Private Type tpVariant
vt As Integer
r1 As Integer
r2 As Integer
r3 As Integer
pt As LongPtr
r4 As LongPtr
End Type
bedvit написал: кто будет управлять памятью, когда я вам передам указатель на массив?
Вы передадите указатель мне и отпустите у себя указатель, а я разименую его на safearray-массив структуры типа XLOPER12. Попутно конечно хотелось бы знать эту структуру, на MS почему-то нет по ней информации. Да скорее всего придется в VBA коде сделать освобождение указателя на массив, но это не проблема.
По общей сложности меня мало волнуют все эти вопросы, но все же скажу, на мой взгляд те две блокировки с утра действитльно выглядели не очень уместными. Там вроде человек составил какой-то развернутый вопрос (я не читал).. Я понимаю бывают такие, которые ни бе ни ме, два слова связать не могут.. Получается как бы тупая уровниловка, тех кто вообще не хочет шевелить мозгами со всеми остальными..
bedvit, а вы не могли бы добавить опцию, чтобы передавать/получать данные непосредственно по указателю массива типа XLOPER12?? (речь о передаваче указателя как целочисленного знчения)
bedvit написал: Собственно это основной тип (структура) данных. Для VBA, Excel трансформирует XLOPER12 в Variant и наоборот
Ну тут понятно, там где какое-нибуь трансформирование, наверняка тупое копирование, а в вашем классе это наверное релизовано как-то поумней. Такой вопрос, а нельзя ли передать в vba указатель непосредственно на массивы данных в ячеек, чтоб непосредстенно из vba можно было работать с этими данными?
Виталий, добрый день! По моему что-то интересное и своевременное. В то время как в соседней теме постановили, что "Эксель себя исчерпал". Это конечно все шутки. Вы как я понимаю сделали быструю выгрузку налист, как раз то чего не хватает. Не моглибы просветить темный народ, что значит тип LPXLOPER12. LP вроде понятно - указатель, а XLOPER12 это что-то вроде бейсикового Variant?