Исходя из того, что ваши даты являются фактическими датами, хранящимися как числа для Excel, а не числами, хранящимися в виде текста, так и для времени, то следующее решение должно работать для вас. Вы можете проверить свои данные, чтобы увидеть, если это фактическая дата, используя:
=ISNUMBER(A2) `where A2 is the cell in question
Если формула возвращает true, то вы знаете, что имеете дело с числом, отформатированным для отображения в виде даты или времени.
В качестве примечания, даты хранятся в виде целых чисел и представляют собой количество дней с 1900/01/01 года, причем эта дата равна 1. Время хранится в виде десятичной дроби, представляющей часть дня. 0,5 будет 12 часов дня.
В этом решении предполагается, что данные размещены в соответствии с изображением ниже.
В ячейку F1 поместите функцию NOW()
. Я вручную ввел дату для контроля значения в демонстрационных целях.
В ячейку F2 введите следующую формулу:
=INDEX(C:C,AGGREGATE(15,6,ROW($A$2:$A$4)/((INT($F$1)=$A$2:$A$4)*(MOD($F$1,1)<=$B$2:$B$4)),1))
AGGREGATE создаст список или все номера строк и отсортирует их от наибольшего к наименьшему. Все эти номера строк будут разделены на ваши критерии проверки. Если результаты ваших критериев равны ВСЕ True, то строка делится на 1 и остается без изменений. Если критерий не выполняется, номер строки делится на 0, что приводит к ошибке. 6 в функции говорит агрегату игнорировать результаты ошибок. Таким образом, вы получите список или номера строк, которые соответствуют вашим критериям. 15 в совокупности говорит агрегат сортировать номера строк от наибольшего к наименьшему. 1 указывает агрегату возвращать номер строки в позиции 1 отсортированного списка. Затем Aggregate передает этот номер строки в INDEX, которая находит строку в соответствующем столбце и возвращает адрес этой ячейки.
теперь просто чтобы вы знали. Точка останова для времени была установлена таким образом, чтобы человек, находящийся рядом со временем списка, был выбран тем точным временем. Имея в виду время 0900 в указанный день, Боб будет выбран. В 10:00:01 будет выбран Бен. В 11:00:01 будет сгенерирована ошибка. Вы можете контролировать это, поместив все это в функцию IFERROR. В 00:00:00 Боб выбран.