Если Дата и Время изменяются с определенными критериями и временем - PullRequest
0 голосов
/ 02 ноября 2018

Я действительно ломаю голову над этим запросом.

Мне нужно обновить ячейку с определенной отметкой времени, если это возможно.

Суббота, воскресенье и понедельник. Я хочу, чтобы даты возвращались к пятнице @ 12: 00: 00

Однако, если Ячейка А1 приземляется в Вт, Ср, Чет, Пт. Я хочу сделать дату и время -24 часа с указанными ниже критериями / исключение

Еще один улов Если ячейка А1 имеет / содержит метку времени> 12:00:00, то необходимо отследить дату / время до предыдущего дня @ 12: 00: 00

Если ячейка А1 имеет / содержит метку времени <12:00:00, тогда верните дату / время назад к предыдущему дню @ 10: 00: 00 </p>

Пример, которого я пытаюсь достичь.

Пример А, который приземляется в Субботу Если ячейка A1 = 3/11/2018 @ 15:00:00, вернитесь к 2/11/2018 @ 12:00:00 (пятница)

Пример B, который приземляется в воскресенье Если ячейка A1 = 4/11/2018 @ 15:00:00, тогда вернитесь к 2/11/2018 @ 12:00:00 (пятница)

Пример C, который приземляется в четверг , но после 12:00:00 Если ячейка A1 = 8/11/2018 @ 15:00:00, вернитесь к 7/11/2018 @ 12: 00: 00

Пример D, который приземляется в четверг , но до 12:00:00 Если ячейка A1 = 8/11/2018 @ 07:30:00, вернитесь к 7/11/2018 @ 10: 00: 00

Имеет ли это смысл? Я пытаюсь автоматизировать расписание Cutoff для своей команды без особых проблем с Excel.

С уважением JW

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Не VBA вариант:

=IF(WEEKDAY(A2,16)<4,INT(A2-WEEKDAY(A2,16))+0.5,IF((A2-INT(A2))>0.5,INT(A2)-0.5,INT(A2)-1+TIMEVALUE("10:00:00"))) enter image description here

0 голосов
/ 02 ноября 2018

Я думаю, что это соответствует логике, которую вы описали, но она не приближается к результатам, которые вы ожидали увидеть. Может быть, использовать его в качестве шаблона и посмотреть, где мое понимание или ваши примеры (или оба) могут быть не так:

Function FunWithDates(InputDate As Double) As Date

  Dim dow As Integer
  Dim dateOnly As Long
  Dim timeOnly As Double

  dateOnly = int (InputDate)
  remainder = InputDate - dateOnly
  dow = Weekday(InputDate)

  If dow = 7 Then  ' Saturday
    FunWithDates = dateOnly - 0.5
  ElseIf dow = 1 Then ' Sunday
    FunWithDates = dateOnly - 1.5
  ElseIf dow = 2 Then ' Monday
    FunWithDates = dateOnly - 2.5
  ElseIf remainder > 0.5 Then
    FunWithDates = dateOnly - 0.5
  ElseIf remainder < 0.5 Then
    FunWithDates = dateOnly - 1 + (10 / 24)
  End If

End Function

enter image description here

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