работа с истекшим временем в Excel 2010

3

У меня есть таблица Excel, в которой время сотрудников записано с текстом и цифрами, как за 7 часов 6 минут. Мне нужно преобразовать существующие данные в ч: мм, чтобы я мог автоматически вычесть перерывы на обед. Любой совет приветствуется!

Лиза Старр
источник

Ответы:

1

Стандартный совет для подобных проблем - не делать много в одной формуле (в одной ячейке), а распределить работу по нескольким ячейкам. Обычно входные данные и результаты будут в параллельных столбцах; поэтому рекомендуемый подход заключается в вычислении промежуточных результатов в других столбцах, которые обычно называют «вспомогательными столбцами». Как только у вас все заработает, вы можете скрыть вспомогательные столбцы и / или вы можете убрать их из поля зрения, расположив их справа от основных данных (например, столбцы  AA- AG).

Вот что я бросил вместе:

A1: 7 часов 6 минут
B1: = НАЙТИ («часы», A1)
C1: = НАЙТИ ("час", A1)
D1: = НАЙТИ ("минута", А1)
E1: = ЗНАЧЕНИЕ (ВЛЕВО (A1, C1-1))
F1: = ЗНАЧЕНИЕ (ЕСЛИ (ISERROR (B1), MID (A1, C1 + 4, D7- (C1 + 4)), MID (A1, B1 + 5, D1- (B1 + 5))))
G1: = AND (F1> = 0, F1 <60)
H1: = ЕСЛИ (ИЛИ (ISERROR (C1), ISERROR (D1), ISERROR (E1), ISERROR (F1), ISERROR (G1)), ИСТИНА, НЕ (G1))
I1: = IF (H1, «Invalid», TIME (E1, F1, 0))

Столбец Iсодержит желаемый результат. (Вы, вероятно, уже знаете это, но, если он отображается в виде числа, это доля дня. Вы можете отобразить его в формате чч : мм , отформатировав его.) Некоторые пояснения:

  • Ищите строки, которые мы ожидаем увидеть. Найдите «час» и «минута», чтобы ввести «1 час 30 минут» или «5 часов 1 минута».
  • Извлеките (с помощью LEFTи MID) фрагменты входной строки, которые мы ожидаем, чтобы содержать числа. Оцените их (превратите их в числа, с которыми мы можем сделать арифметику), позвонив VALUE.
  • Если есть ошибка, выведите «Invalid», в противном случае вычислите продолжительность времени из количества часов и минут.

Заметки:

  • Он достаточно гибкий (апатичный), чтобы принимать «1 час 30 минут» или «5 часов 1 минута».
  • Он сообщит «Неверный», если количество минут <0 или ≥ 60, но выдаст #NUM!ошибку, если количество часов <0, и, если ≥ 24, он обработает его по модулю 24 (потому что это то, что TIMEфункция делает).
  • Нецифровый текст, где цифры должны быть («FOO часы БАР минут»), вызовет ошибку, но нецелые числа не будут - «7,5 часов 0 минут» обрабатывается как «7 часов 0 минут» (потому что это то, что TIMEфункция делает).
  • Он сообщит «Неверно», если не найдет строки «час» и «минута», поэтому «7 часов» вызовет ошибку (используйте «7 часов 0 минут»), но игнорирует посторонний текст после слова « минута », так что« 7 часов 6 минут, пока я не смогу вернуться домой »- все в порядке.

Я надеюсь, что этого достаточно, чтобы вы могли адаптировать его к вашим потребностям.

Скотт
источник
Вау, хорошо, Скотт, спасибо за твои подробности. Я собираюсь попробовать это завтра со свежим разумом, я действительно ценю, что вы нашли время, чтобы написать все это.
Лиза Старр
Скотт, то, что ты предложил, сработало! Замечательно! Так что теперь у меня есть ряды чисел в электронной таблице, которые отражают часы, отработанные в 7:06. Я добавил столбец, чтобы вычесть 30-минутный перерыв на обед в течение 5 часов, так что теперь у меня есть ячейка с 6:36. У меня 130 рядов с двойным интервалом. Теперь я хочу добавить все часы, отработанные определенным сотрудником, и общее количество всех сотрудников за месяц. Но когда я их суммирую, он вычисляется неправильно. Я пытался играть с форматами, и я получаю что-то вроде 16:03 или дробь, оба из которых не так. Пожалуйста помоги!
Лиза Старр
Для упрощения отображения попробуйте выбрать формат времени, который допускает значения часов ≥ 24. Если вы его не видите, перейдите в пользовательские форматы и измените h:mm;@на [h]:mm;@. Для целей расчета значение времени I1составляет (DAY(I1)*24 + HOUR(I1))часы плюс MINUTE(I1)минуты.
Скотт