Я пытаюсь составить расписание для ограниченного количества тренингов (около 50), которые будут распределены по ограниченному количеству площадок (около 15), и я ищу более разумный подход, чем тот, который я использую сейчас.
Расписание состоит из двух электронных таблиц:
Таблица 1 содержит данные по тренингам. Одна строка на тренинг. Со столбцами для названия места проведения тренинга, даты начала и даты окончания.
Таблица 2 должна быть визуальным представлением данных в таблице 1, которая адаптируется к изменениям в исходных данных. Пока что она содержит один столбец для каждого дня года и одну строку для каждого места обучения. Таким образом, каждая ячейка представляет собой определенную дату в определенном месте обучения.
Цель состоит в том, что если на листе 1 указано, что обучение проводится в месте проведения AZ
с 1 April 2017
по 27 April 2017
, то ячейки, представляющие даты с 1 April
по 27 April
в строке места проведения обучения AZ
на листе 2, будут помечены с помощью условного форматирования.
Функция условного форматирования, которую я в настоящее время использую для строки, представляющей место проведения обучения, AZ
будет выглядеть следующим образом:
=IF(OR(AND(Sheet1!$C$5="AZ";Sheet1!$F$5>=B$6;Sheet1!$E$5<=B$6);AND(Sheet1!$C$6="AZ";Sheet1!$F$6>=B$6;Sheet1!$E$6<=B$6); ...... AND(Sheet1!$C$50="AZ";Sheet1!$F$50>=B$6;Sheet1!$E$50<=B$6));TRUE;FALSE)
Таким образом, повторяющаяся часть AND проверяет для каждой ячейки, попадает ли дата ее столбца (содержащаяся в строке 6) в начальную и конечную дату любого из тренингов на листе 1 и проходит ли это обучение в месте проведения обучения AZ
. Если это верно для любого из тренингов на листе 1, функция IF истинна, и ячейка помечается.
Удивительно, но это пока работает. Однако это очень трудоемкое и неэлегантное решение. Поэтому теперь я ищу способ прекратить повторять часть AND функции 50 раз для каждого из 15 мест обучения.
Обширное гугление подсказало, что формулы массива могут быть выходом, и что условное форматирование по умолчанию рассматривается как формула массива, поэтому я попробовал:
=IF(AND(Sheet1!C3:C54="AZ";AND(B$6>=Sheet1!E3:E54;B$6<=Sheet1!F3:F54));TRUE;FALSE)
и
=IF(OR(AND(Sheet1!C3:C54="AZ";AND(B$6>=Sheet1!E3:E54;B$6<=Sheet1!F3:F54)));TRUE;FALSE)
Но пока безуспешно. Думаю, я не до конца понял, как работают формулы массивов. Так что если вы заметили какие-либо очевидные ошибки в моей функции, у вас есть мысли о том, что я могу попробовать, или можете предложить какие-либо альтернативные подходы к тому, что я пытаюсь сделать, пожалуйста, дайте мне знать.
Иначе я сойду с ума, копируя и адаптируя этот чертов раздел «И» до бесконечности.