Как создать ссылку на диапазон переменного количества столбцов в формуле? - PullRequest
0 голосов
/ 27 мая 2020

Я составляю расписание для длинного списка клиентов, частота которых меняется. Частота посещений варьируется от одного раза в три месяца до одного раза в год. Я создаю формулу, которая будет заполнять график с января по июнь следующего года с клиентами, которых нужно видеть каждый месяц. У меня есть имена клиентов вверху (январь в D2, февраль в E2, и т. Д. c.) И список имен ниже.

Я пытаюсь отфильтровать по одному из критериев, что его нет за последние x месяцев (столбцы), где x - частота, но если месяц - март, и у клиента есть встречи каждые 5 месяцев, вместо 5-ти месяцев следует искать последние 3 месяца.

Ниже формула многократно выдает ошибку #VALUE! из-за INDIRECT в строке COUNTIF(IF(COLUMN() - Schedule!$G$2:$G$262 < 4, $D$3:D$264, INDIRECT(SUBSTITUTE(ADDRESS(1,COLUMN() - 1,4),"1","") & "2:" & SUBSTITUTE(ADDRESS(1,COLUMN() - Schedule!$G$2:$G$262,4),"1","") & "264")), Schedule!$C$2:$C$262 ) = 0.

=FILTER( Schedule!$C$2:$C$262, ( IFERROR( DATEDIF( Schedule!$F$2:$F$262, DATE( $B$3, MONTH( DATEVALUE( E$2 & "1" ) ), 1 ), "M" ), ( 0 - DATEDIF( DATE( $B$3, MONTH( DATEVALUE( E$2 & "1" ) ), 1 ), Schedule!$F$2:$F$262, "M" ) ) ) >= Schedule!$G$2:$G$262 ) * (COUNTIF(IF(COLUMN() - Schedule!$G$2:$G$262 < 4, $D$3:D$264, INDIRECT(SUBSTITUTE(ADDRESS(1,COLUMN() - 1,4),"1","") & "2:" & SUBSTITUTE(ADDRESS(1,COLUMN() - Schedule!$G$2:$G$262,4),"1","") & "264")), Schedule!$C$2:$C$262 ) = 0 ) * (Schedule!$E$2:$E$262 = $B$6) * ( Schedule!$F$2:$F$262 <> "" ), "" )
  • Schedule!$C$2:$C$262 - это имена клиентов
  • Schedule!$F$2:$F$262 - дата самой последней встречи
  • Schedule!$G$2:$G$262 - частота их встреч

Любая помощь будет принята с благодарностью :).

1 Ответ

0 голосов
/ 28 мая 2020

Я преобразовал ваше расписание в таблицу и использовал следующую формулу: (вы можете преобразовать структурированные ссылки в адреса ячеек, если хотите)

=IFERROR(FILTER(tblSchedule[[Name]:[Name]],
     (MOD(DATEDIF(tblSchedule[[Last Review]:[Last Review]],DATE($B$3,COLUMN()-2,0),"m"),tblSchedule[[Frequency]:[Frequency]])=0)*
     (DATEDIF(tblSchedule[[Last Review]:[Last Review]],DATE($B$3,COLUMN()-2,0),"m")<>0)),"")

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

Номер месяца получается из номера столбца и года в B3 для создания даты сравнения. enter image description here

...