Контакты

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (32)

Лучшие ответы пользователя

Все ответы (267)
  • Как оптимизировать код в VBA?

    1-е
    Оживить Excel (т.е. избавить его от зависания) Вы можете путем добавления перед каждой инструкцией "next ..." команды "DoEvents". Но хочу предупредить, что это увеличит общее время выполнения всего кода, т.е. эта команда заставляет Excel останавливать Ваш код и обрабатывать действия пользователя или системные, которые к этому моменту накопились.
    Пример
    ...
        DoEvents
    next x
    ...


    2-е
    Вам надо избавиться от частого обращения к ячейкам. Это делается путем копирования всего дампа данных за один раз.
    вместо
        For i = 1 To rows
            arrStreet(i - 1) = Cells(i, 71)
            arrHouse(i - 1) = Cells(i, 15)
            arrCampus(i - 1) = Cells(i, 34)
        Next i
    
    Используем
            'таким образом мы убираем цикл длиной в 180к *3 обращений к листу
            ' если протестировать затраты времени только на этом участке, экономия будет колоссальная
            arrStreet = range(Cells(1, 71), Cells(rows, 71))
            arrHouse = range(Cells(1, 15), Cells(rows, 15))
            arrCampus = range(Cells(1, 34), Cells(rows, 34))
            
           ' Но т.к. теперь мы имеем 2х мерные массивы, их надо обратить в одномерные, т.к. последующий код использует одномерные.
           arrStreet = WorksheetFunction.Transpose(arrStreet)
           arrHouse = WorksheetFunction.Transpose(arrHouse )
           arrCampus = WorksheetFunction.Transpose(arrCampus )


    3-е
    Далее по коду идут постоянные обращения к ячейкам внутри вложенных циклов
    5cc2af9e419d8174137510.jpeg

    В общем надо проанализировать алгоритм и убрать все циклические обращения к ячейкам. Заменить их обращениями к массивам, которые предварительно будут заполнены копированием дампов (как показано выше).
    Далее (возможно?!, если позволит алгоритм) уменьшить количество циклов за счет сортировки исходных данных и бинарного поиска по массивам.
    Для справки: Бинарный поиск находит данные примерно за 7-8 обращений к массиву, тогда как простой перебор (который организован у Вас) делает в худшем случае 180к обращений.

    Здесь есть простор для оптимизации.
    И сделайте бэкап перед редактированием.
    Ответ написан
  • При подключении ajax-ом файла php выдается 500 ошибка?

    В начало файла добавьте строку и должно заработать
    require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

    Если есть желание разобраться то почитать можно здесь, и заглянуть внутрь файла "/wp-admin/admin-ajax.php"
    Ответ написан
  • Как в WooCommerce изменить порядок товаров?

    Можно ли в админке, путём перетаскивания, менять порядок отображения товаров на сайте?
    Конечно можно. Только этот порядок будет меняться для всех категорий
    Смотри здесь
    Нажимаешь "Сортировать товары" и перетаскиваешь.
    Ответ написан
  • Как объединить диапазоны ячеек в массив?

    Ну можно через именованные диапазоны
    Панель "Формулы" - "Диспетчер имен"
    Создайте новое имя и при выборе диапазона выберите все нужные ячейки через Ctrl
    Потом в формуле используйте это имя
    Для вставки в формулу можно пользоваться командой "Формулы" - "Использовать в формуле"

    Или считать через VBA
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (22)