Преобразование "## h ## m" в ##. ## часов - PullRequest
0 голосов
/ 03 июля 2018

Приложение отслеживания моего времени экспортирует рабочие часы сотрудников в следующем формате:

xxh yym

Я ищу способ преобразовать это в десятичное число часов. Например,

input(06h 30m)
return(6.5)

Не могу найти способ сделать это в Google Sheets или Excel. Я пытался создать новую функцию, но это намного выше моих возможностей. У меня очень мало опыта программирования.

Спасибо за любую помощь!

Ответы [ 4 ]

0 голосов
/ 04 июля 2018

В Google Sheets , вы можете сделать это с помощью встроенной функции REGEXEXTRACT() согласно следующей формуле (при условии, что ваш текст хранится в A1)

=REGEXEXTRACT(A1,"^(\d{2})h \d{2}m") + REGEXEXTRACT(A1,"^\d{2}h (\d{2})m")/60

REGEXEXTRACT() - функция извлечения регулярного выражения. Вход текст 06h 30m имеет следующий шаблон ^\d{2}h \d{2}m, где

  • ^ относится к началу строки
  • \d относится к однозначному числу, \d{2} означает две цифры
  • h, , m - все символы в том виде, в каком они указаны в справочном тексте.

Следовательно, используя () вокруг частей, которые мы должны извлечь из текст и простую арифметику вы можете конвертировать 06h 30m в 6.5

Более подробную информацию о синтаксисе регулярных выражений можно найти в этом учебник

0 голосов
/ 03 июля 2018
Function ConvertTime(hours, minutes)
     return hours + (minutes/60)
End Function
0 голосов
/ 03 июля 2018

Альтернативная формула:

=24*TIMEVALUE(SUBSTITUTE(SUBSTITUTE(A1,"m",""),"h ",":"))
0 голосов
/ 03 июля 2018

Я не совсем уверен, что вы подразумеваете под «входом» и находится ли он в ячейке или источнике данных какого-либо типа, который вы анализируете, и неясно, является ли описанный «06h 30m» значением времени в ячейке с пользовательским форматом или если это текстовое поле.

В этом ответе предполагается, что данные представляют собой текстовое поле (в ячейке A2) и что вы хотите вернуть число в виде часов и долей часа, максимум 24 часа (поскольку я также предполагаю, что это часы сотрудника в день). Предполагается, что всегда есть двузначное число часов или минут и между xxh и yym есть один пробел:

=TIME(LEFT(A2,2),MID(A2,5,2),0)*24

Надеюсь, это, по крайней мере, приведет вас в том направлении, в котором вы пытаетесь добраться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...