Стандартный совет для подобных проблем - не делать много в одной формуле (в одной ячейке), а распределить работу по нескольким ячейкам. Обычно входные данные и результаты будут в параллельных столбцах; поэтому рекомендуемый подход заключается в вычислении промежуточных результатов в других столбцах, которые обычно называют «вспомогательными столбцами». Как только у вас все заработает, вы можете скрыть вспомогательные столбцы и / или вы можете убрать их из поля зрения, расположив их справа от основных данных (например, столбцы 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 минут, пока я не смогу вернуться домой »- все в порядке.
Я надеюсь, что этого достаточно, чтобы вы могли адаптировать его к вашим потребностям.
h:mm;@
на[h]:mm;@
. Для целей расчета значение времениI1
составляет(DAY(I1)*24 + HOUR(I1))
часы плюсMINUTE(I1)
минуты.