Чтобы получить только этот список напрямую, потребуется VBA, что возможно, но StackOverflow не является услугой «напишите свой код» для вас. Мы поможем, если вы застряли в своем коде, но вам нужно знать, как писать код и начать с него.
Тем не менее, если вы примете несколько более простое решение, то одна формула может дать вам желаемый результат:
- Преобразование диапазона встреч в таблицу данных с заголовками столбцов «Начало» и «Конец»
- Установить имя таблицы на "Встречи"
- Сохраните новую длину встречи (2) в ячейке и назовите ее «Длина»
- Создайте список всех возможных времени начала встречи, начиная с A1
- Введите эту формулу рядом с первым разом в 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](https://i.stack.imgur.com/FiKok.png)