Страницы: Пред. 1 2
RSS
Как не перебирать все условия, а выйти после первой ИСТИНЫ
 
Замечательно!
Владимир
 
Цитата
Сергей Евдокимов написал:
Макрос с "Case" - 5 минут 09 секунд
Макрос с "ElseIf" - 5 минут 14 секунд.
ипануццо
а кто выиграл?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
sokol92 написал:
Замечательно!
Ну, не совсем. Чуть ещё можно выиграть, до 14 секунд сократить. Уж больно слабо подходящий набор случайных чисел для слияния диапазонов получился.
Тут уже ваш подход с сортировкой форматированием и восстановлением результата даст заметный выигрыш. Запуск по отсортированным данным (без сохранения и восстановления результата) 4 секунды.
Скрытый текст
 
Цитата
Сергей Евдокимов написал:
Отступлю от темы. Ибо вопрос же закрыт.
вы задали вопрос на общественной площадке, и возможно, хоть одному придется искать решение подобной задачи, так что правильное закрытие вопроса-оставить здесь готовое решение. откуда взял туда и положи, а не система нипель:)
 
Если учесть, что ТС собирается данное решение применять для анализа биржевых котировок, сокращение времени форматирования ячеек с 5 минут до 4 секунд - хорошая новость...)
Изменено: Marat Ta - 18.04.2021 11:56:35
 
Цитата
vikttur написал:
Даже если ячейка-две - помогающим легче написать код в редакторе, чем "на коленке". И проверить работоспособность можно сразу.
И, поскольку это общественный ресурс а не личка- новичкам может быть полезно посмотреть работающий код.
"Спасибо, вы мне больше не нужны, я все сделал, никому не покажу"-?
 
Поздно прочитал тему.  Поругали и автора и помогающих.


Изменено: Евгений Смирнов - 24.04.2021 07:14:44
 
Цитата
Андрей VG написал:
Тут уже ваш подход с сортировкой
Идею использования сортировки для сокращения количества несмежных диапазонов я взял из сообщений Владимира (ZVI) на форуме. :)  
Владимир
 
Цитата
Сергей Евдокимов: Как при первой же "ИСТИНЕ" в условии прекратить дальнейшие операторы цикла и уйти сразу же на следующий элемент коллекции в этом же цикле?
Цитата
Marat Ta: GoTo или Exit For
Цитата
Ігор Гончаренко о «Exit For»: самое то!!! остальные ячейки проверять не нужно, нашли одну и отлично! Marat Ta ,как бы это по-мягче...
набросился за второй вариант, хотя первый отлично работает (сам постоянно использую)
Ответ «в лоб» по вопросу

Цитата
Андрей VG: попаразитировать на подходе Алексея
не уверен, что вы правильно поняли мой подход (передать в готовую функцию длинную строку и получить массив максимально "укрупнённых" диапазонов) ну или я просто не разобрался в вашем  :)
Мой вариант. Не тестил за отсутствием примера
Изменено: Jack Famous - 19.04.2021 10:21:07
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
ПРОИЗВЕД написал:
правильное закрытие вопроса-оставить здесь готовое решение
Ежели вдруг кому сгодится...
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
Цитата
Marat Ta написал: ...данное решение применять для анализа биржевых котировок
Не совсем. Это единовременная операция по изменению формата отображения данных. Не котировок, а данных финансовой отчетности и мультипликаторов. Это не одно и то же. Хоть и, вероятно, не так важна моя "поправка".  

По сути и 5 минут не сильно много для меня, ибо, как уже указал, "единовременно". Просто хотелось, чтоб код был грамотным. Д.Быстров так учил )
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
Цитата
Jack Famous написал:
Ответ «в лоб» по вопросу
С бейсика еще впитал (в далеком детстве ), что Goto - очень недобрый оператор. Оператор телепортации. Можно улететь и не вернутся )
Вообщем никогда его не использую.
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
OFF
Цитата
Сергей Евдокимов: Goto - очень недобрый оператор
в вашем утверждении доказательств не обнаружено. Холивар по поводу "GoTo — для тупых" обсуждается в других ветках. Я применяю переход давно и всегда успешно (замена его на аналоги только увеличивает размер кода), так что тут скорее про "дай дураку пенис стеклянный…"  :D
Применять же его или нет - дело ваше, мой код выше о другом (переходы меняйте как хотите)
Изменено: Jack Famous - 19.04.2021 11:20:29
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
в вашем утверждении доказательств не обнаружено. Холивар по поводу "GoTo — для тупых" обсуждается в других ветках
обсуждается в других ветках >> доказательств не обнаружено
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
Сергей Евдокимов, вот мои доказательства, а где ваши?
[Попытка метнуть стрелу пресечена] :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Сергей Евдокимов, странно видеть вас в споре, после ваших слов, что в Excel вы новичок и не знаете простейших операторов типа Case или Elseif.

По поводу GoTo приведу пример....  выйти из цикла без его применения в некоторых случаях ну архисложно.... (если только вы немного понимаете в VBA)
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=138344&a...
Изменено: Marat Ta - 19.04.2021 11:47:59
 
Цитата
Marat Ta написал:
странно видеть вас в спорах...
Где увидели ?

Цитата
Marat Ta написал:
...вы новичок и не знаете простейших...
Совершенно верно.  ~30 лет назад программировал на ассемблере, а сейчас даже не знаю синтаксис VB. Вот повороты-то бытия..
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
 
Цитата
30 лет назад программировал на ассемблере,
Оффтоп....
Молодежь наверное напугает малознакомые слова Ассемблер, MS-DOS...

Но так как я и сам программировал по мелочи в DOS Ассемблере некоторые функции для Pascal, C и Clipper, никаких "нормальных" проектов сделать любителю там не под силу. Подправить кем то написанные драйвера экранных шрифтов или клавиатуры?

Сейчас все совсем другое ... и я никак не сопоставляю опыт полученный тогда с нынешним...
Изменено: Marat Ta - 19.04.2021 12:15:32
 
Цитата
Jack Famous написал:
и получить массив максимально "укрупнённых" диапазонов)
Ну, так в принципе и делает по ходу выполнения. Для индекса формата миллионов получается в первое выполнение такая строка адреса, к которому применяется пользовательский формат миллионов
B2:B5,B7:B8,B10:B11,B14:B16,B20:B22,B25:B26,B28:B29,B31:B38,B40,B42,B45:B47,B49:B50,B54:B58,B60:B63,B67:B72,B76,B79:B81,B86,B89,B91:B93,B96:B97,B100,B103,B106:B110,B112,B114,B117:B118,B120,B122,B124:B125,B128:B130,B132,B134:B135,B137:B139,B142,B144:B149
Всего получается 11540 обращений на установку формата для 539999 случайных целых чисел от -2 миллиардов до 2 миллиардов.
 
Цитата
Андрей VG: по ходу выполнения
вот именно, что по ходу, а как я понял, передать овердлинную строку Join(arrAdr(),",") и резать её на блоки ~255 символов, получая диапазон для каждого такого блока, получается сильно быстрее
В моих темах и тесты есть - если есть желание и возможность то, сравните. Я сравнивал с вариантом Виталия (укрупнение при сборе адресов) и он стабильно и заметно проигрывает

P.S.: мне очень тяжело обращаться к тебе на "Вы" - как будто поругались  :D
Изменено: Jack Famous - 19.04.2021 13:17:07
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: Пред. 1 2
Наверх