Google Spreadsheet:制作一个数组公式,根据条件垂直和水平扩展

Google Spreadsheet: Making an arrayformula that expands vertically and horizontally with conditions

我的点差[​​=33=] 是关于员工休假日历的。每个员工每年有25天的假期,他可以建议什么时候休假,是否分开休假。

Sheet'Responses'的数据指向Sheet'Options'。然后,所选期间在 Sheet 'Options Splited'.

中拆分为开始日期和结束日期

主要公式,从 Sheet 'Calendar' 中的 E4 开始,基本上检查日期单元格(从 E$1 到 NE$1)是否在所选时间段之间。如果是,它将在该单元格上设置值“VACATION”。

=IF((OR(and(E>='OPTIONS - PERIODS SPLITED'!$B5;E<='OPTIONS - PERIODS SPLITED'!$C5);and(E>='OPTIONS - PERIODS SPLITED'!$D5;E<='OPTIONS - PERIODS SPLITED'!$E5);and(E>='OPTIONS - PERIODS SPLITED'!$F5;E<='OPTIONS - PERIODS SPLITED'!$G5)));"VACATION"; "")

我把公式从 E4 拖到了 N41。但是,我想知道是否可以使用 arrayformula 函数将公式垂直扩展到第 41 行并水平扩展到列 NE。

注:下面的sheet是复制的。我减少了原始公式以促进理解。我希望它是可以理解的。

https://docs.google.com/spreadsheets/d/1Z9Pn9fV4Ptefd3v96m4LyoqUxxGrvUR07rn9zxEOsrQ/edit?usp=sharing

日历!E4:

=ARRAYFORMULA(IF(C4:C41='OPTIONS - PERIODS SPLITED'!A5:A42,IF(((E1:NE1>='OPTIONS - PERIODS SPLITED'!B5:B42)*(E1:NE1<='OPTIONS - PERIODS SPLITED'!C5:C42)+(E1:NE1>='OPTIONS - PERIODS SPLITED'!D5:D42)*(E1:NE1<='OPTIONS - PERIODS SPLITED'!E5:E42)+(E1:NE1>='OPTIONS - PERIODS SPLITED'!F5:F42)*(E1:NE1<='OPTIONS - PERIODS SPLITED'!G5:G42))>0,"Vacation","")))