Как сделать секундомер в excel

Обновлено: 03.07.2024

Как в VBA сделать секундомер и вывести информацию о текущем времени

Перейдем теперь к следующей, уже более сложной разработке. Итак, на рабочем листе необходимо создать интерфейс, показанный на рис. 1.37. Здесь обозначения Часы, Минуты и Секунды представляют элементы управления «Надпись» и являются просто поясняющими надписями рядом с соответствующими текстовыми окнами, в которые выводится информация о времени. Вывод этих сведений инициирует щелчок на кнопке Отобразить время. Фактически таким образом мы реализуем на рабочем листе вариант электронных часов. Фрагмент Секундомер (это слово набрано просто в ячейке на листе) позволяет в тех же окнах реализовать функции секундомера. Работа секундомера запускается по нажатию кнопки Старт. В этом случае текстовое окно для отображения текущего часа очищается, а информация в окнах, отводимых для минут и секунд, начинает обновляться.

Если пользователю требуется остановить отсчет времени, то он должен щелкнуть на кнопке Стоп, после чего обновление времени останавливается. В табл. 1.1 указаны имена и тины объектов, расположенных на рис. 1.37.

Таблица 1.1. Имена объектов на рис.1.37

В качестве первого шага введем переменную Flag, которая нам понадобится для остановки обновления времени. Эта переменная должна быть известна как процедуре обработки щелчка на кнопке Старт, так и процедуре обработки щелчка на кнопке Стоп.


Рис. 1.37. Реализация часов и секундомера

В редакторе Visual Basic существует общая область, где можно описывать переменные (рис. 1.38), которые должны быть известны внутри нескольких процедур. Строка программы в окне, представленном на рис. 1.38, означает следующее:

  • Dim определить (это ключевое слово Visual Basic);
  • Flag имя переменной;
  • As Integer определение данной переменной как целого числа (значениями переменной могут быть только целые числа).

Таким образом, мы определили переменную, которая должна быть известна всем процедурам на данном рабочем листе Excel. И если одна из процедур поменяет значение переменной Flag, то в другой процедуре это изменение можно увидеть. В дальнейшем мы этим воспользуемся для остановки обновления времени по щелчку на кнопке.


Рис. 1.38. Определение переменной в общей области

После такого вступительного комментария можно привести процедуру обработки щелчка на кнопке Отобразить время (листинг 1.18).

Теперь разберем строки этой процедуры. Во-первых, здесь используется оператор цикла, который начинается со строки While Flag = 0 и заканчивается строкой Wend . После ключевого слова While располагается условие, и если оно выполняется, то выполняются все строки программы вплоть до Wend . Затем управление опять передается на строку While , и если условие вновь выполняется, то все повторяется. Если же условие не выполняется, то управление передается на первую строку после Wend .

Далее по тексту располагается внутренняя процедура Visual Basic DoEvents , которая позволяет переключаться из выполняемого программного кода на обработку других событий. В данном случае нам необходимо по щелчку на кнопке Стоп установить значение переменной Flag в 1, что реализуется в процедуре, приведенной в листинге 1.19.

Таким образом, мы обеспечили вывод текущего времени и его остановку. Что касается остановки, то она скорее требуется для секундомера. И теперь наша задача заключается в реализации его функциональности. В листинге 1.20 приведена процедура, которая выполняется по щелчку на кнопке Старт, что позволяет включить секундомер.

Здесь мы использовали операцию целочисленного деления () для получения числа прошедших минут. Программа для работы секундомера готова, и на рис. 1.39 показан результат ее работы.


Рис. 1.39. Пример работы секундомера

Познакомимся на практике в рамках данного примера со свойством, которое определяет доступ к элементам управления. Как мы уже знаем, у элементов управления имеется свойство Enabled. Когда для этого свойства установлено значение True, доступ к данному элементу разрешен, а в противном случае (при значении False) доступ запрещен.

Изменим предыдущую разработку следующим образом. В окне свойств для кнопок Старт и Отобразить время значение свойства Enabled установим True, а для кнопки Стоп в качестве значения этого свойства выберем False. В результате в начале работы для действий пользователя доступна кнопка, позволяющая отобразить время, и кнопка секундомера, а кнопка Стоп недоступна. Теперь при щелчке на кнопке Старт доступ к кнопке Стоп должен разрешаться, кнопка Старт должна стать недоступной. В листинге 1.21 показана модифицированная процедура обработки щелчка па кнопке Стоп, которая затрагивает свойства двух кнопок, относящихся к секундомеру.

Также требуются небольшие изменения в процедуре обработки щелчка на кнопке Старт. Ее текст представлен в листинге 1.22.

Читать еще: Как сделать аналитическую таблицу в excel?

После выполненных изменений доступ к кнопкам в программе реализуется попеременно. Заметим, что по мере рассмотрения дальнейших разработок в наших статьях будет наблюдается общая тенденция на усложнение, поэтому рекомендуется каждый рассматриваемый пример прорабатывать детально. Необходимые сведения по VBA будут приводиться здесь и в последующих статьях в процессе рассмотрения разработок, поэтому явной необходимости в использовании дополнительной справочной информации нет. С другой стороны, было бы очень хорошо, если бы читатель познакомился с известными книгами по рассматриваемой теме.

Функции ЧАС, МИНУТЫ и СЕКУНДЫ для работы с временем в Excel

В программе Excel по умолчанию предусмотрены функции для работы с датой и временем: ЧАС, МИНУТЫ и СЕКУНДЫ. Детально рассмотрим эти три функции в действии на конкретных примерах. Как, когда и где их можно эффективно применять, составляя различные формулы из этих функций для работы с временем.

Примеры использования функций ЧАС, МИНУТЫ и СЕКУНДЫ для расчетов в Excel

Функция ЧАС в Excel предназначена для определения значения часа из переданного времени в качестве параметра и возвращает данные из диапазона числовых значений от 0 до 23 в зависимости от формата временной записи.

Функция МИНУТЫ в Excel используется для получения минут из переданных данных, характеризующих время, и возвращает данные из диапазона числовых значений от 0 до 59.

Функция СЕКУНДЫ в Excel применяется для получения значения секунд из данных в формате времени и возвращает числовые значения из диапазона от 0 до 59.

Контроль по часам суточного времени в Excel используя функцию ЧАС

Пример 1. Получить текущее время, определить, сколько часов прошло с начала текущих суток, сколько часов осталось до начала новых суток.


Определим текущий момент в коде времени Excel:


Вычислим количество часов от начала суток:


  • B2 – текущие дата и время, выраженные в формате Дата.

Определим количество часов до окончания суток:


  • 24 – количество часов в сутках;
  • B3 – текущее время в часах, выраженное в виде числового значения.

Примечание: пример демонстрирует то, что результатом работы функции ЧАС является число, над которым можно выполнять любые арифметические действия.

Преобразование чисел в формат времени с помощью функций ЧАС и МИНУТЫ

Пример 2. Из приложения были подгружены моменты прохождения некоторых событий, которые были распознаны Excel в виде обычных чисел (например, 13:05 было распознано как число 1305). Необходимо преобразовать полученные значения в формат времени, выделить часы и минуты.

Исходная таблица данных:


Для преобразования данных используем функцию:


В результате получим:


С помощью функций ЧАС и МИНУТЫ выделим искомые величины. Аналогично определим требуемые значения для остальных событий:

Читать еще: Как сделать квадратное уравнение в excel?


Пример использования функции СЕКУНДЫ в Excel

Пример 3. Рабочий день начинается в 8:00 утра. Один работник систематически опаздывал на протяжении предыдущих 10 рабочих дней на несколько секунд. Определить общее время опозданий работника.

Внесем данные в таблицу:


Определим опоздание в секундах. Где B3 – данные о времени прихода на работу в первый день. Аналогично определим секунды опозданий для последующих дней:


Определим общее количество секунд опозданий:


Где C3:C12 – массив ячеек, содержащих значения секунд опозданий. Определим целое значение минут опозданий, зная, что в 1 мин = 60 секунд. В результате получим:


То есть, общее опоздание сотрудника за 10 дней составило 263 секунды, что более 4-х минут.

Особенности синтаксиса функций ЧАС, МИНУТЫ и СЕКУНДЫ в Excel

Функция ЧАС имеет следующую синтаксическую запись:

время_в_числовом_формате – единственный аргумент функции (обязательный для заполнения), характеризующий данные времени, которые содержат данные о часах.

Функция МИНУТЫ имеет следующий синтаксис:

Синтаксис функции СЕКУНДЫ в Excel:

время_в_числовом_формате – единственный аргумент, представленный в виде данных, из которых будут вычислены значения секунд (обязателен для заполнения).

Скриншот листа с секундомерами

Программа предназначена для фиксации времени событий (хронометража) в таблице Excel в режиме онлайн.

Типичное применение такой программы - фиксации времени прохождения кругов автогонщиками, но подойдёт данный секундомер и для учёта времени на любых других спортивных состязаниях.

  • изменяемое количество участников - от 1 до 20
  • изменяемое количество кругов (заездов, состязаний) - от 1 до 6
  • возможность начислять отдельным участникам штрафные баллы (секунды)
  • автоматический подсчёт суммарного времени
  • распределение мест среди участников
  • возможность сортировки таблицы результатов состязания по любому параметру
  • фиксация времени с точностью до сотых долей секунды

Смотрите также программу для игрового клуба / интернет кафе
для учёта времени и платежей нескольких игроков на приставках

Смотрите также упрощённую (предыдущую) версию программы-секундомера,
без возможности выбора количества участников и числа состязаний

В последней версии программы, желтая кнопочка сверху, в принципе, не нужна - теперь всё и без неё работает.
Разве что перед изменением количества участников потребуется принудительно остановить главный таймер.

Обратите внимание, что следующие действия:

  • добавление или удаление участников
  • изменение количества кругов
  • простановка штрафных баллов (секунд)

возможны только при остановленном главном таймере.

Не пытайтесь во время соревнования, при включенных секундомерах, прописать кому-то штрафные секунды,
- это приведёт к полной остановке макроса, и, соответственно, к некорректным результатам.

Комментарии

1. Про андроид очень жаль. Вообще нет вариантов?
2. мин.1500 - понятно, а макс.? А лучше конкретно сколько такая доработка будет стоить?

1. На андроиде макросы не работают, так что работать не будет
2. Могу сделать под заказ. От 1500 руб

Здравствуйте, Игорь!
1. Будет ли работать на андроиде?
2. Что нужно, чтобы увеличить максимально возможное число участников до 50-100 и число кругов до 30-50?

Любые доработки бесплатных макросов, - только на платной основе.
Если сами не можете поменять что-то в файле, - высылайте заказ через сайт, сделаем под заказ.

тот же самый вопрос. нужно поменять "фамилия" на "новая задача".

Добрый день, очень крутой макрос!
Использовал для ведения статистики в любительских картинговых соревнованиях. Единственный не очень удобный момент, что пришлось открывать 2 параллельных экселя, что бы замерить 8 последовательных отрезков, а потом прыгать между 2-мя файлами.
Насколько сложно увеличить кол-во возможных кругов (заездов, состязаний) скажем до 20, ну или хотя бы до 12?
Буду признателен за ответ, лучше в личку.
Спасибо!

секундомер и таймер - это две большие разницы. Когда программист, который пишет макросы, не понимает точно над чем он работает, тогда и получается "каша"

Привет, написал на почту.
Нужна доработка вашего файла.
Ответьте.

А случайно кто может помочь в этом деле не знаете?

Под iPAD - надо писать отдельное приложение (это не ко мне, на айпаде макросы Excel не работают)

А как данную прогу заточить на работу на Apple iPad??
И кол-во кругов до 10 увеличить.

а пароль к макросу какой?

Запустить 2 (и более) файлов можно — но каждый файл надо запускать в отдельной копии приложения Excel
Т.е. не так, что открыли один файл, потом запустили второй двойным щелчком, - так не получится.

Надо так: открыли в Excel первый файл любым способом,
потом запустили второй Excel (например, через меню ПУСК), - и вот во втором Excel через меню Файл-Открыть запускаете второй файл.

Поскольку 2 запущенных Excel между собой никак не связаны - все будет работать независимо.

Насчет увеличения участников до 50 - не проблема, можно сделать
Минимальная стоимость заказа у нас — 1000 рублей
Если устраивает, - можно доработать файл под ваши нужды.

Здравствуйте.
Интересная программа, но к сожалению два открытых секундомера одновременно не работают. Можно ли что то сделать для одновременного запуска двух файлов ? Так же интересно увеличение участников до 50. Сколько это будет стоить ? (занимаюсь организацией соревнований по ориентированию на внедорожниках). Константин.

Да, можно доработать (если готовы оплатить доработку - обращайтесь в скайп, или на почту)

Можно ли доработать программу таким образом, чтобы при нажатии старт/стоп продолжалось/останавливалось время в той же ячейке. Этот секундомер планируется использовать не для соревнований, а для хронометрирования офисных задач. т.е. одну задачу отложили, выполнили другую, потом вернулись к первой. на выходе получили суммарное время по задачам. спасибо.

Здравствуйте, Александр.
Расширить число участников можно.
Правда, если участников будет тысяча, я плохо представляю, как будет выглядеть процесс фиксации прохождения ими круга (представьте, что за 5 секунд на финиш пришли 50 участников забега. Вы успеете найти в списке из 1000 спортсменов 50 нужных, и нажать 50 кнопок за 5 секунд?)

Протокол тоже можно сделать, если покажете на примере, как он должен выглядеть.

Расширить число участников и вывод ротокол победителя можно

Действительно, разница есть, - если запустить таймер для всех сразу, и потом остановить главный таймер, чтобы у всех участников время зафиксировалось.
Разница во времени составляет сотые доли секунды:

Разница во времени для участников гонки

Эти сотые доли секунды Excel тратит на запись времени в ячейки (запись ведется сверху вниз)

Можно, конечно, доработать макрос, чтобы запись во все ячейки производилась одновременно (и проблема исчезнет),

но задача достижения такой точности заказчиком программы не ставилась.

Таймер работает с одним недочетом - начисление времени производится для всех участников не одновременно, а со сдвигом времени в сторону увеличения номера участника

Читайте также: