Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 15:01:02

Войти
Интересные и полезные статьи по работе с Excel и VBA можно найти в разделе ХИТРОСТИ
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
  Просмотр сообщений
Страниц: [1]
1  Основные форумы / Вопросы по Excel и VBA / Re:Преобразование формул в макрос для обработки массива данных : 22.04.2020, 10:36:45
После замера скорости вычислений, на 5001 строку и 3 столбца, получились такие данные:
- макрос 1:28:52 часа
- формулы 1 814 539 миллисекунд = 30.24231666667 минут

Скорость вычисления формул замерена макросом:
Код: (vb)
Sub Test1()
   t = Timer
   Range("A2:C5002").Calculate
   MsgBox (Timer - t) * 1000 & "msec"
End Sub


Конфигурация: Lenovo IdeaPad L340, Win10 (x64), MS Excel 2010 (x32), AMD Ryzen 3 3200U (2,6 GHz), RAM 8 Gb

Буду искать другие решения задачи.
2  Основные форумы / Вопросы по Excel и VBA / Re:Преобразование формул в макрос для обработки массива данных : 21.04.2020, 15:39:44
Как бы... Как минимум в приложенных файлах сильно нарушен принцип создания строк как VBA, так и формул.


Спасибо за ответ! Так как с VBA я был не знаком ранее - наделал столько ошибок.
По вашим замечаниям внес корректировки в макрос.
Первую колонку таблицы с датами удалось заполнить!
Буду работать над остальными.

А вообще задумка была, чтобы все данные сформировались в массиве и затем целиком выгрузились на лист.
Других подходов для решения данной задачи придумать не смог.
3  Основные форумы / Вопросы по Excel и VBA / Re:Преобразование формул в макрос для обраб&# : 21.04.2020, 10:10:49
Первую часть макроса, которая отвечает за даты, насколько смог откорректировал, чтобы чтение предыдущих вычислений происходило из ячеек, но положительного результата добиться не получилось. Верно записывается только ячейка А1, далее выдаёт ошибку #ЗНАЧ!

Код:

Sub Test()  
    Dim arr(50, 2) As Variant  
    arr(0, 0) = Application.Evaluate("=MIN(Baza!$G:$H)")  
    Range("A1") = arr(0, 0)  
        For i = 1 To 50  
        arr(i, 0) = Application.Evaluate("=IF(COUNTIF((List2!$A$1:List2!A & i - 1,List2!A & i - 1, 0)<SUMPRODUCT((Baza!H:H<=List2!A & i - 1)*(Baza!G:G>=List2!A & i - 1)),List2!A & i - 1,List2!A & i + 1)")  
        Range("A" & i + 1) = arr(i, 0)  
    Next i  
End Sub  

Почему то неверно отображается код - в начале и в конче добавляются обрывки. Код с 8 по 16 строку.
Комментарий администратора код поправил
4  Основные форумы / Вопросы по Excel и VBA / Преобразование формул в макрос для обработки массива данных : 20.04.2020, 14:41:39
Добрый день, уважаемые форумчане!
Есть таблица (база данных) вида: наименование работ - дата начала и окончания - производитель работ, и ее необходимо преобразовать к виду: дата - наименование работ - производитель работ - в хронологическом порядке от старых к новым.
Столкнулся с задачей преобразования формул массива в макрос, в связи с тем, что процесс расчетов через формулы занимает очень длительное время при большом количестве данных.
Данные формулы были записаны с помощью макрорекордера, но дальше возникла сложность с их преобразованием - не смог разобраться как правильно задать переменные которые формируются в массиве VBA.
Прошу оказать посильную помощь)
Страниц: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru