Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] округление дат (http://forum.oszone.net/showthread.php?t=307534)

golovatov 04-11-2015 17:31 2571580

округление дат
 
Вложений: 1
Все доброго дня.
Прошу мне снова помочь.
есть задача округления времени
если значение времени за 14 минут до начала следующего часа, то округлить к следующему часу+1 минута
(пример: если 22:46, то округлить до 23:01)
если значение в интервале от 00 до 15 мин, то округлить до 01 ( пример, если 01:08 , то округлить до 01:01)
если значение в интервале от 15 до 45 мин, то округлить до 31 (пример: если 20:44, то округлить до 20:31)
только это надо прописать вот в таком логическом выражении
if ? then ? else ? endif

Помогите пожалуйста.

a_axe 04-11-2015 17:46 2571588

golovatov, попробуйте использовать формулу вида:
Код:

=ВРЕМЯ(ЧАС($B$2);ЕСЛИ(МИНУТЫ($B$2)>45;61;ЕСЛИ(МИНУТЫ($B$2)>15;31;1));0)
(ссылки даны на ячейку $B$2, для того, чтобы формулу можно было заменить - замените на относительную ссылку "B2".

golovatov 04-11-2015 18:35 2571607

a_axe, а можете показать как это будет выглядеть ,используя выражения , о которых я говорил
if время за 14 минут до начала следующего часа,then round к следующему часу+1 минута...
т.е. как будто ввиде макроса прописывается. ну или в стиле SQL. используя этот оператор if

a_axe 04-11-2015 20:33 2571646

golovatov, функция округлить тут не очень подходит - даты в экселе исчисляются в сутках, соответственно один час - это 0,04166[6] по абсолютному значению. На VBA код будет выглядеть приблизительно так (округления я не использую):
Код
Код:

Public Function timeround(time As Date)
Dim min As Date
    min = Minute(time)
    If min > 45 Then min = 61 Else If min > 15 Then min = 31 Else min = 1
    timeround = TimeSerial(Hour(time), min, 0)
   
End Function


или с оператором Select Case:
Код
Код:

Public Function timeround2(time As Date)
Dim min As Date
min = Minute(time)
Select Case min
    Case Is > 45
        min = 61
    Case Is > 15
        min = 31
    Case Else
        min = 1
End Select

timeround2 = TimeSerial(Hour(time), min, 0)
   
End Function



Время: 21:08.

Время: 21:08.
© OSzone.net 2001-