Excel: проверять часы в последовательном порядке, в том же столбце, когда критерии соответствуют - PullRequest
1 голос
/ 21 октября 2019

У меня есть БД, которая содержит заказы на отправку для разных клиентов, одна отправка может иметь более одной отправки с разным расчетным временем прибытия, логика такова: отправки на каждом маршруте должны следовать в последовательном порядке (06: 00-> 06:30-> 08:00), а не (06: 30-> 08: 00-> 06:00) все время находятся в одном и том же столбце, но номер маршрута находится в другом столбце. Проверка должна выполняться только для отправлений по тому же маршруту.

Сначала я попытался использовать отдельный лист с ячейками, вычисляющими разницу между каждым разом и следующим в маршруте, но я получаю ошибки, когда формула встречает пустые ячейки. Формула была такой:

=IF(COUNTIFS($I$2:$I$2000;$I2;$A$2:$A$2000;$A$2)>1;$E3-$E2;0)

Я использовал COUNTIFS () для проверки отправки по одному и тому же маршруту для одного и того же диспетчерского центра, поскольку БД объединяет 5 диспетчерских центров. Формула возвращала отрицательные числа, когда обнаруживала неправильную последовательность, но обнаруживала ложные срабатывания между последней и первой отправкой на соседних маршрутах.

Затем я попытался использовать условное форматирование, чтобы проверить это, используя:

=IF(COUNTIFS($I$2:$I$2000;I2;$A$2:$A$2000;A2)>1;E3<E2;0)

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

ОБНОВЛЕНИЕ: Вот некоторые примеры данных, поскольку вы можете видеть, что времена не являются последовательными, но также имеют ложные срабатывания при последней / первой отправке на каждом маршруте

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

1 Ответ

1 голос
/ 21 октября 2019

Предположим, у вас есть следующие именованные диапазоны :

  • Col_A , являющиеся вашими данными в столбце A;
  • Col_E - ваши данные в столбце E;
  • Col_I - ваши данные в столбце I.

В качестве правила форматирования можно использовать следующую формулу:

=NOT(AGGREGATE(15,6,Col_E/(Col_A&Col_I=$A2&$I2),COUNTIFS($A$2:$A2,$A2,$I$2:$I2,$I2))=$E2)

Выделите Столбец E с активной ячейкой E2, перейдите к условному форматированию, чтобы установить указанное выше правило форматирования, и у вас должно получиться что-то вроде следующего:

Example

Column J только для демонстрации. Вам не нужен этот столбец в вашем фактическом рабочем листе.

Логика состоит в том, чтобы использовать Col_E/(Col_A&Col_I=$A2&$I2) для возврата соответствующего диапазона времени из столбца E на основе информации в столбцах A и I, а затем использовать *Функция 1035 * AGGREGATE возвращает наименьшее значение nth из этого диапазона, где nth определяется по формуле COUNTIFS , затем сравнивает время nth с фактическим временем, чтобы выяснить,они одинаковые. Если это не так, это означает, что доставка была запланирована на более позднее время, но позиционирована раньше других поставок, которые были запланированы на более раннее время, или наоборот (поэтому и те, которые были доставлены раньше, и те, которые были доставлены позднос более ранним временем оба выделены в моем примере).

Дайте мне знать, если у вас есть какие-либо вопросы. Ура :) 1045 *

...