Как найти список доступных временных интервалов с заданными запланированными датами из списка на листе Excel / VBA? - PullRequest
0 голосов
/ 11 июня 2019

У меня уже есть список запланированных встреч и я хочу показать все возможные временные интервалы, доступные с 7:30 до 17:00 для 2-часовой встречи. Я пробовал визуальный и смог получить его через хак, но мне нужно заставить его работать, просто прочитав таблицу ниже

РАСПИСАНИЕ НАЗНАЧЕНИЙ |---------------------|-------------------| | Start Date/Time | End Date/Time | | 6/12/2019 7:30 AM | 6/12/2019 8:30 AM | | 6/12/2019 8:45 AM | 6/12/2019 9:15 AM | | 6/12/2019 3:00 PM | 6/12/2019 3:30 PM | | 6/12/2019 3:45 PM | 6/12/2019 4:15 PM | | 6/12/2019 4:15 PM | 6/12/2019 5:00 PM | |---------------------|-------------------|

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:

  • 6/12/2019 9:15
  • 6/12/2019 9:30 AM
  • 6/12/2019 9:45
  • 6/12/2019 10:00
  • 6/12/2019 10:15
  • 6/12/2019 10:30
  • 6/12/2019 10:45
  • 6/12/2019 11:00 AM
  • 6/12/2019 11:15
  • 6/12/2019 11:30
  • 6/12/2019 11:45
  • 6/12/2019 12:00
  • 6/12/2019 12:15
  • 6/12/2019 12:30
  • 6/12/2019 12:45
  • 6/12/2019 13:00

1 Ответ

1 голос
/ 11 июня 2019

Чтобы получить только этот список напрямую, потребуется VBA, что возможно, но StackOverflow не является услугой «напишите свой код» для вас. Мы поможем, если вы застряли в своем коде, но вам нужно знать, как писать код и начать с него.

Тем не менее, если вы примете несколько более простое решение, то одна формула может дать вам желаемый результат:

  1. Преобразование диапазона встреч в таблицу данных с заголовками столбцов «Начало» и «Конец»
  2. Установить имя таблицы на "Встречи"
  3. Сохраните новую длину встречи (2) в ячейке и назовите ее «Длина»
  4. Создайте список всех возможных времени начала встречи, начиная с A1
  5. Введите эту формулу рядом с первым разом в B1 и сохраните ее, нажав CTRL + SHIFT + ENTER :

=AND((ROUND(Appointments[Start],4)>=ROUND(A1+Length/24,4))+(ROUND(Appointments[End],4)<=ROUND(A1,4)),ROUND(A1-TRUNC(A1),4)<=ROUND((17-Length)/24,4))

Затем заполните эту формулу для каждого временного интервала, и она скажет ИСТИНА для доступных временных интервалов.

Для каждого возможного временного интервала формула проверяет, что все существующие встречи заканчиваются в или перед временным интервалом или начинаются через 2 или более часов после временного интервала. Он также проверяет, что осталось не менее 2 часов в день до окончания в 5 вечера. Формула обрабатывает различные длины, необходимые для новой встречи, изменяя значение в ячейке «длина».

Добавлены функции ROUND для устранения проблем с точностью с плавающей запятой для дробей / времен, не всегда правильно определяющих, когда 2 раза совпадают.

enter image description here

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