Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Время расчета формул на каждом листе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Время расчета формул на каждом листе (Макросы/Sub)
Время расчета формул на каждом листе
Мурад Дата: Среда, 27.05.2015, 11:28 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Добрый день! Вопрос общий, не касается конкретного случая. Имеется некоторый файл с множеством листов. На каждом листе свой набор формул, в том числе формул массива. Как определить время расчета формул на каждом листе? Чтобы в дальнейшем понимать, на каком листе упростить формулы.
 
Ответить
СообщениеДобрый день! Вопрос общий, не касается конкретного случая. Имеется некоторый файл с множеством листов. На каждом листе свой набор формул, в том числе формул массива. Как определить время расчета формул на каждом листе? Чтобы в дальнейшем понимать, на каком листе упростить формулы.

Автор - Мурад
Дата добавления - 27.05.2015 в 11:28
Samaretz Дата: Среда, 27.05.2015, 11:50 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 223
Репутация: 63 ±
Замечаний: 0% ±

Excel 2010; 2013; 2016
Если вопрос общий, то и ответ общий :-)
Включаем ручной пересчет листа и запускаем макрос, который запоминает текущее время, запускает пересчет текущего листа и снова смотрит снова на время.

Разница между этими двумя значениями и будет длительность расчета текущего листа.
 
Ответить
СообщениеЕсли вопрос общий, то и ответ общий :-)
Включаем ручной пересчет листа и запускаем макрос, который запоминает текущее время, запускает пересчет текущего листа и снова смотрит снова на время.

Разница между этими двумя значениями и будет длительность расчета текущего листа.

Автор - Samaretz
Дата добавления - 27.05.2015 в 11:50
_Boroda_ Дата: Среда, 27.05.2015, 12:13 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
На пустом листе запустите вот этот макрос. Примерное время он покажет в столбце В
[vba]
Код
Sub tt()
     sc_ = ThisWorkbook.Sheets.Count
     ac_ = Application.Calculation
     Application.Calculation = xlCalculationManual
     For i = 1 To sc_
         t_ = Timer
         Sheets(i).Calculate
         tt_ = Timer - t_
         kk = Sheets(i).Name
         ActiveSheet.Range("A" & i).Value = kk
         ActiveSheet.Range("B" & i) = Format(tt_ / 24 / 60 / 60, "hh:mm:ss")
     Next i
     Application.Calculation = ac_
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНа пустом листе запустите вот этот макрос. Примерное время он покажет в столбце В
[vba]
Код
Sub tt()
     sc_ = ThisWorkbook.Sheets.Count
     ac_ = Application.Calculation
     Application.Calculation = xlCalculationManual
     For i = 1 To sc_
         t_ = Timer
         Sheets(i).Calculate
         tt_ = Timer - t_
         kk = Sheets(i).Name
         ActiveSheet.Range("A" & i).Value = kk
         ActiveSheet.Range("B" & i) = Format(tt_ / 24 / 60 / 60, "hh:mm:ss")
     Next i
     Application.Calculation = ac_
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 27.05.2015 в 12:13
Pelena Дата: Среда, 27.05.2015, 12:15 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19196
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеБыла похожая тема

Автор - Pelena
Дата добавления - 27.05.2015 в 12:15
Мурад Дата: Среда, 27.05.2015, 16:26 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Саша, ошибка компиляции с Timer. Неизвестная функция или переменная пишет..
 
Ответить
СообщениеСаша, ошибка компиляции с Timer. Неизвестная функция или переменная пишет..

Автор - Мурад
Дата добавления - 27.05.2015 в 16:26
_Boroda_ Дата: Среда, 27.05.2015, 16:31 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вместо Timer напишите Now


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВместо Timer напишите Now

Автор - _Boroda_
Дата добавления - 27.05.2015 в 16:31
Мурад Дата: Среда, 27.05.2015, 16:39 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Саша, получается вот так:
[vba]
Код
Sub timer()
      sc_ = ThisWorkbook.Sheets.Count
      ac_ = Application.Calculation
      Application.Calculation = xlCalculationManual
      For i = 1 To sc_
          t_ = Now
          Sheets(i).Calculate
          tt_ = Now - t_
          kk = Sheets(i).Name
          ActiveSheet.Range("A" & i).Value = kk
          ActiveSheet.Range("B" & i) = Format(tt_ / 24 / 60 / 60, "hh:mm:ss")
      Next i
      Application.Calculation = ac_
End Sub
[/vba]
В результате запуска макроса время на всех листах по нулям, хотя я ждал не менее 5 секунд. Часть кода:
[vba]
Код
tt_ = Now - t_
[/vba] не есть равно 0, ведь выше написано [vba]
Код
t_ = Now
[/vba]?


Сообщение отредактировал Мурад - Среда, 27.05.2015, 16:41
 
Ответить
СообщениеСаша, получается вот так:
[vba]
Код
Sub timer()
      sc_ = ThisWorkbook.Sheets.Count
      ac_ = Application.Calculation
      Application.Calculation = xlCalculationManual
      For i = 1 To sc_
          t_ = Now
          Sheets(i).Calculate
          tt_ = Now - t_
          kk = Sheets(i).Name
          ActiveSheet.Range("A" & i).Value = kk
          ActiveSheet.Range("B" & i) = Format(tt_ / 24 / 60 / 60, "hh:mm:ss")
      Next i
      Application.Calculation = ac_
End Sub
[/vba]
В результате запуска макроса время на всех листах по нулям, хотя я ждал не менее 5 секунд. Часть кода:
[vba]
Код
tt_ = Now - t_
[/vba] не есть равно 0, ведь выше написано [vba]
Код
t_ = Now
[/vba]?

Автор - Мурад
Дата добавления - 27.05.2015 в 16:39
_Boroda_ Дата: Среда, 27.05.2015, 16:48 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ну да, еще в формате
[vba]
Код
Sub timer()
      sc_ = ThisWorkbook.Sheets.Count
      ac_ = Application.Calculation
      Application.Calculation = xlCalculationManual
      For i = 1 To sc_
          t_ = Now
          Sheets(i).Calculate
          tt_ = Now - t_
          ActiveSheet.Range("A" & i).Value = Sheets(i).Name
          ActiveSheet.Range("B" & i) = Format(tt_, "hh:mm:ss")
      Next i
      Application.Calculation = ac_
End Sub
[/vba]
Э, стоп! Я почему у Вас макрос называется timer? Переназывайте и все работать будет по первому варианту


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу да, еще в формате
[vba]
Код
Sub timer()
      sc_ = ThisWorkbook.Sheets.Count
      ac_ = Application.Calculation
      Application.Calculation = xlCalculationManual
      For i = 1 To sc_
          t_ = Now
          Sheets(i).Calculate
          tt_ = Now - t_
          ActiveSheet.Range("A" & i).Value = Sheets(i).Name
          ActiveSheet.Range("B" & i) = Format(tt_, "hh:mm:ss")
      Next i
      Application.Calculation = ac_
End Sub
[/vba]
Э, стоп! Я почему у Вас макрос называется timer? Переназывайте и все работать будет по первому варианту

Автор - _Boroda_
Дата добавления - 27.05.2015 в 16:48
Мурад Дата: Среда, 27.05.2015, 17:00 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Единственное, что поменял в Вашем коде, явилось ошибкой :D . Вот что значит, кривые руки. Вставил первый вариант в исходном виде, определил самый тяжелый лист. Спасибо, Саша, за старания!
Универсальным и очень полезным средством считаю этот код.
 
Ответить
СообщениеЕдинственное, что поменял в Вашем коде, явилось ошибкой :D . Вот что значит, кривые руки. Вставил первый вариант в исходном виде, определил самый тяжелый лист. Спасибо, Саша, за старания!
Универсальным и очень полезным средством считаю этот код.

Автор - Мурад
Дата добавления - 27.05.2015 в 17:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Время расчета формул на каждом листе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!