Google Sheets Рекурсивная формула массива - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь создать список последовательных дат от заданной даты до самой последней даты в другом столбце.

=ARRAYFORMULA(IF(OR(A2:A=MAX(C:C),A2:A=""),"",DATEVALUE(A2:A+1)))

Я использую MAX(), чтобы найти даты самой последней даты в столбце C. Я пытаюсь использовать эту формулу для рекурсивной проверки даты в ячейке выше, чтобы определить, была ли достигнута максимальная дата. Я удостоверился, что у А2 уже есть установленная дата начала.

Вывод только в одной ячейке, и я не знаю почему.

Спасибо за помощь.

1 Ответ

0 голосов
/ 29 августа 2018

Что, кажется, беспокоит вашу текущую формулу массива, так это то, что, как она определена, она продолжается вечно и является самоссылочной.Может быть способ сделать это, задав предпочтения, чтобы они были итеративными и помогали интерпретировать попадание в повторяющиеся ячейки с "" как сходимость.Вот способ обойти эти проблемы.Вы можете сделать это более пуленепробиваемым (например, заключив его в IFERROR), но в основном вы можете точно рассчитать, сколько записей вам нужно, а затем соответственно установить свой диапазон в формуле Array.В A3 вы помещаете следующее:

=arrayformula(DATEVALUE(Row(indirect("A3:A"&(max(C:C)-A2+2)))+A2-2))

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

EDIT: приведенная выше реализация предполагает, что вынужно как минимум 2 свидания.Вы можете справиться с этим и другими странными случаями с помощью следующей, менее читаемой формулы: =if(max(C:C)>A2,iferror(arrayformula(DATEVALUE(Row(indirect("A3:A"&(max(C:C)-$A$2+2)))+$A$2-2))),"")

...