t.me Оказывает, что есть настоящие соревнования по экспертной работе в Excel, где не на жизнь, а насмерть сражаются команды. Выглядит завораживающе, но ничего не понятно:)
я вроде все понимаю, но задания "the average amount....." или "relative strength....." меня удручают. Нет, технически я их могу перевести на русский, типа "средняя сумма" или "крутость страны" в данном виде спорта, но блин продираться сквозь иностранный язык
экселька же на русский переведена, есть такое же, но в нашем формате?
Однажды мне понадобилось выполнить сложную выборку из массива на 40к+ строк по многим условиям. Vlookup и всякие прочие обычные (но часто полезные!) формулы не справились. Пришлось использовать формулу массива. Считала она минут 10, чем неимоверно бесила. Хотелось быстрее. Админ сказал "Закинь необсчитанный файл на сервер где 1С крутится. Он всяко помощнее будет, там и запусти."
Это было утро того дня, когда я 3 раза наглухо повесил буховский сервер и мне за это ничего не было :)
А но моём относительно слабеньком ноутбуке за 10 минут считалось...
> Я, кстати,тоже массивы люблю, с ними удобно, все туда запихал и можешь изгаляться как тебе хочется. ))
Вот!)
Главный плюс такого подхода - обращаясь в алгоритме к элементам раз полученного массива, ты не работаешь со свойствами объектной модели листа, не дергаешь миллион раз объектную модель, а просто читаешь из памяти по индексам. С ростом скорости на порядки иногда. С нюансами, понятно, - ибо массив в Vba это чаще массив все таки скорее ссылок на значения или объекты(и не только в vba). Но, тем не менее, можно и так упрощенно воспринимать различие.
Я тоже склонен, ага.
Но минусы тоже есть - когда задуманная функция не предполагает громадного количества итераций сопоставления/чтения ячеек и легко формализуема и/или когда надо сделать единовременную задачу и сделать быстро - иногда гораздо проще сделать формулы, нежели делать красиво и динамично, "чтоб все летало")
> > Пришлось использовать формулу массива
>
> Vba не проще было юзануть, раз такие тормоза?
>
> Скажем, разом в массивец двумерный грузанул диапазон и кодом его, собаку. Не тот случай?
Я уже не помню в чём там дело было. Но VBA я активно юзал к тому времени несколько лет. Думаю, если бы был профит - закодил бы задачу.
Основной минус - если придëтся файл кому-нибудь на сторону давать. Потом задолбаешься объяснять, что не хотел никого вирусами заразить, номера банковских карт и фотографии голых котиков украсть.
> если придëтся файл кому-нибудь на сторону давать.
Ну я исхожу из того, что по хорошему на сторону обычно либо дают некий уже готовый результат, не представляющий собой интерактивности, либо дают информационную систему, заведомо подразумевающую, что она являет собой программные средства.
В первом случае ни кода, ни формул там быть не должно по хорошему, а лишь некие готовые данные.
Во втором случае - это заведомо ПО и объяснять никому ничего в общем то не надо, максимум - должно упоминаться в инструкции, что следует включать макросы, иначе так нужно любой исполняемый файл сопровождать текстом вида "осторожно, может ругаться касперский".
Само собой, я вполне допускаю, что жизнь сложнее и ситуации бывают всякие.
И, разумеется, сталкиваясь с ситуацией, когда тебе вот в этом случае вообще никак нельзя обогащать документ кодом, а интерактив при этом необходим - придется юзать формулы.
Но я, хоть возможно и ошибочно, считаю эту ситуацию эксцессом, в силу чего и выношу ее за скобки изначально.
> Но минусы тоже есть - когда задуманная функция не предполагает громадного количества итераций сопоставления/чтения ячеек и легко формализуема и/или когда надо сделать единовременную задачу и сделать быстро - иногда гораздо проще сделать формулы, нежели делать красиво и динамично, "чтоб все летало")
Согласна, но если нужно быстренько связать списки и скопировать из одно в другой без преобразований, то Vlookup - мой фаворит. )) А вотт формулы в Excel громоздкие очень, а уж конструкции с If - вообще кошмар, лучше сразу в vba уходить и не мучиться.