Если событие произошло в X месте в течение Y дней, вернуть значение Z (Excel или Google Sheets) - PullRequest
1 голос
/ 05 ноября 2019

У меня есть набор данных События повторяющихся событий с каждым событием в виде строки и каждым столбцом в качестве данных, связанных с этим событием. Существует дата и место для каждого события. Новые локации добавляются на регулярной основе. Иногда эти события перестают идти в определенное место. У меня есть отдельный лист «Местоположения» со списком мест, и я хотел бы классифицировать места как «Активные» или «Неактивные», чтобы знать, активно ли они получают это мероприятие.

Мероприятия - это медицинские клиники,но вы также можете думать о них как о доставляемом пакете или посещении сайта.

Я хочу классифицировать местоположения в соответствии с этой типологией:

  • «Активен», если произошло событиев течение последних 90 дней
  • «Неактивно», если событие произошло в последний раз более 90 дней назад

Какую формулу следует использовать?

Вот пример файла и снимки экрана: https://docs.google.com/spreadsheets/d/1tn1tSza-hza1qVKotEcMyNBktZTlExBB5MQBlcyfkP8/edit?usp=sharing

Скриншот листа событий

Скриншот листа локаций

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

паста в B2

=ARRAYFORMULA(IF(REGEXMATCH(FILTER(A2:A, A2:A<>""), TEXTJOIN("|", 1, 
 FILTER(Events!B2:B, Events!A2:A>=TODAY()-90))), "active", "inactive"))

0

0 голосов
/ 05 ноября 2019

Использование Excel :

В ячейке B2 вашего листа Locations введите следующую формулу и перетащите ее вниз.

=IFERROR(IF((TODAY()-AGGREGATE(14,6,Events!A:A/(Events!B:B=A2),1))<=90,"Active","Inactive"),"Not Applicable")

Во-первых, Events!A:A/(Events!B:B=A2) вернет массив дат, "отфильтрованных" по заданному местоположению, затем используйте функцию AGGREGATE , чтобы вернуть наибольшую дату из массива, затем вычтите эту дату из TODAY (), если результат <=90 дней, вернуть Active, в противном случае Inactive.

Если для данного местоположения не найдена дата, функция IFERROR вернет Not Applicable.


Использование Google-Sheets :

В ячейке B2 вашего листа Locations введите следующую формулу и перетащите ее вниз.

=IF((TODAY()-MAXIFS(Events!A:A,Events!B:B,A2))<=90,"Active","Inactive")

Логикадолжен использовать MAXIFS , чтобы вернуть самую последнюю дату по указанному местоположению, а затем использовать ее для сравнения с TODAY () , а остальное такое же, как в предыдущей формуле, за исключением того, что эта формула может возвращатьInactive для местоположения, в котором нет посещений, но предыдущее может вернуть Not Applicable для тех, которые никогда не посещались.

Эта функция также работает в Excel, если ваша версия Excel имеет MAXIFS функция.

...