Добрый день! Ранее многоуважаемые участники форума помогли с формулой, которая может сделать подсчёт количества стран, которые одновременно экспортируют два отдельных продукта. Однако в процессе её использования возникла необходимость применять её к большому массиву данных. Excel системно не справляется с расчетами, виснет. Возможно ли как-то ускорить процесс или можно использовать какие-то альтернативные формулы? Спасибо за потраченное Вами время
Ускорение расчета формул массива на конкретном примере. Или использование альтернативных формул?
07.08.2014 10:38:57
|
|
|
|
07.08.2014 11:22:56
Не вполне понял про 1000х1000, но быстро получить эту 3 макросом нет особых проблем.
Макросы не принимаются? (не вникал в первую тему). Например:
Если нужна именно формула, но разрешены макросы - можно сделать UDF. В параметрах можно указываеть диапазон и критерии отбора.
Изменено: |
|||
|
|
07.08.2014 12:05:27
|
|||
|
|
07.08.2014 12:09:50
Чтоб сделать получше нужно подумать... Не обещаю ![]() Т.к. появилась выше сводная (правда на 2003 её особо не потыркать...) - то макрос думаю теряет актуальность? |
|||
|
|
07.08.2014 12:24:29
Можно макросом сделать цикл по таблице 1000*1000 (причём вычислять по данным нужно только половину таблицы) - но это только если не придумается что-то поэффективнее...
|
|
|
|
07.08.2014 12:31:25
создать словарь номеров.
для каждого номера - словарь стран. потом попарно проверять кол-во совпадающих стран в словарях для каждой пары номеров.
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
07.08.2014 12:33:23
Вот добавил мини-пример результативной матрицы с пояснение того, что нужно иметь в каждой ячейке. Будьте добры посмотреть.
|
|
|
|
07.08.2014 12:34:21
Уважаемый Ikki, к сожалению, я не знаком с техникой созданий подобных словарей. Если для Вас не будет затруднительно, расскажите на моем примере. Спасибо.
|
|
|
|
07.08.2014 12:37:30
а смысл?
я Вам на Вашем примере в прошлой Вашей теме рассказывал про ADO. и показывал. и файл прикладывал. ни ответа, ни привета. вместо этого - создали дубликат темы. (что, кстати, правилами форума запрещено)
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
07.08.2014 12:38:14
|
|
|
|
07.08.2014 12:46:40
Уважаемый Ikki, я приношу свои извинения. Просто мой уровень пользования не позволил использовать Ваш пример. Я благодарен Вам за ответы.
|
|
|
|
07.08.2014 12:52:11
Такую же матрицу как в примере, наверняка не получится сводной сделать.
Но я так и не увидел конечную задачу, возможно и не потребуется так делать, что вы хотите видеть, опишите словами, например: "Сколько стран поставляют товар 402 и 405 одновременно", эту задачу решает приведенный мной пример выше.
Изменено: |
|
|
|
07.08.2014 12:58:30
Вот написал тупо перебором (но на словарях) на примере, где 1000*1000 начиналась в Q6:
Если и во второй добавить DoEvents - мешать вообще не будет.
Изменено: |
|||
|
|
07.08.2014 13:00:00
во-первых, на таком объеме данных макрос будет работать не мгновенно.
думаю, пара минут всё-таки понадобится. во-вторых, для приложенного примера имеется 1131 разный код. в моем текущем Excel 2003 столько столбцов нет.
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
07.08.2014 13:04:12
Я тоже сейчас сижу на 2003 - так что на большой таблице проверить не могу.
|
|
|
|
07.08.2014 13:06:26
ок. перезагрузился в 2010-й... сейчас набросаю (код Hugo пока смотреть не хочу, потом сравним, если что
![]()
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
07.08.2014 13:12:16
Проверил Ваш скрипт, Hugo. Матрицу данных заполнил двойками, на пересечении, как и надо, прочерки. Что корректировать? спасибо)
|
|
|
|
07.08.2014 13:16:55
И что, совсем ни одной троечки?
![]() Можно ничего не корректировать, если работает. Но для надёжности вместо [q6].CurrentRegion всюду (2 места) пропишите свой диапазон таблицы.
Изменено: |
|
|
|
07.08.2014 14:00:25
гм... может, я задачу не совсем понял...
Вас интересуют только те коды, которые имеются в заголовках "правой таблицы" или все? я писал для всех, которые встретятся в основной таблице
хотя... для матрицы в 1,28 млн элементов и это неплохо. или всё-таки дело в том, что словари на 2010-м медленные?
Изменено:
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|||
|
|
07.08.2014 14:23:55
а... значит, всё-таки я недопонял.
ну, переписывать не буду. пользуйтесь макросом Hugo
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
Читают тему