我有一个谷歌电子表格,可以跟踪参加某些持续数周的课程的人。这里只有 2 门课程,但我的实际电子表格有 20 门课程,每门课程的参加人数不同。
在 L 列中,我想要一个计算课程运行的下一个开放日期的公式(因为它们在场地不可用的某些周关闭)。在第 1 行和第 7 行中,某些周被“关闭”,而某些周被列为“已退款”,这意味着该课程本周关闭并且参加者本周获得退款。所以L2应该是5月10日,L8应该是4月27日
在单元格 L3 和下方,它应该显示谁将在下一个开放日期参加。我希望单元格 L3 中的这个 arrayformula 对下面 L 列中的所有课程执行此操作。我该怎么做?
A | 乙 | C | D | E | F | G | H | 我 | J | K | 大号 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 周三课程 | 关闭 | 已退款 | 关闭 | 下次约会 | |||||||
2 | 名字 | 姓氏 | ID | 4 月 5 日 | 4月12日 | 4月19日 | 4月26日 | 3 月 | 5月10日 | 5月17日 | 5 月 24 日 | 5月10日 |
3 | 约翰 | 史密斯 | 212 | y | y | y | y | y | ||||
4 | 亨利 | 琼斯 | 437 | y | y | y | y | |||||
5 | 凯蒂 | 罗杰斯 | 894 | y | y | y | y | |||||
6 | ||||||||||||
7 | 周四课程 | 已退款 | 关闭 | 下次约会 | ||||||||
8 | 名字 | 姓氏 | ID | 4 月 6 日 | 4月13日 | 4月20日 | 4月27日 | 5 月 4 日 | 5月11日 | 5月18日 | 5 月 25 日 | 4月27日 |
9 | 乔丹 | 戴维斯 | 014 | y | y | y | y | y | ||||
10 | 玫瑰 | 麦肯齐 | 709 | y | y | y | y | |||||
11 | 拉吉 | 帕特尔 | 338 | y | y | y | y | |||||
12 | 弥敦道 | 绿色 | 338 | y | y | y | y | y | y | y |
这是共享的 Google 电子表格: 谷歌表格链接
在此处添加解决方案。请测试一下:
=let(Δ,scan(,byrow(U4:AP,lambda(Σ,if(isdate(index(Σ,,1)),+filter(column(Σ),Σ>=today(),not(regexmatch(offset(Σ,-2,),"Refund|Cancel"))),))),lambda(a,c,if(c<>"",c,a))),
map(D4:D,Δ,lambda(Σ,Γ,if(Σ="",,index(offset(Σ,,-3,,42),,Γ)))))
最终更新的公式:
=let(Δ,scan(,byrow(U4:AP,lambda(Σ,if(isdate(index(Σ,,1)),+filter(column(Σ),Σ>=today(),not(regexmatch(offset(Σ,-2,),"Refund|Cancel"))),))),lambda(a,c,if(c<>"",c,a))),
map(T4:T,Δ,lambda(Σ,Γ,if((Σ="Status")+(Σ="Week #"),,index(offset(Σ,,-19,,42),,Γ)))))