Excel: ARRAYFORMULA 中的逻辑运算符
Excel: logical operators in ARRAYFORMULA
- 我正在尝试定义一个函数来计算日期所在的纳税年度。
- 我想使用 array-formula 来做到这一点,让它成为 auto-generated
这是我拥有的完整解决方案:
=ARRAYFORMULA(
IF(
ROW(A:A)=1,
"Tax year",
IF(
ISBLANK(A:A),
"",
IF(
OR(MONTH(A:A)>4, AND(MONTH(A:A)=4, DAY(A:A)>=6)),
YEAR(A:A)&"-"& YEAR(A:A)+1,
YEAR(A:A)-1 &"-"&YEAR(A:A)
)
)
)
)
但我注意到它的行为方式与我期望的不同。所以我试着把它分解成更小的步骤。这是一个 spreadsheet demo,其中除了带有青色 header 的列之外的所有列都是使用 array-formulae.
生成的
注意:
- 该演示具有欧洲日期格式。
- 这用于计算英国纳税日期,该日期从 4 月 6 日开始,因此逻辑围绕该特定日期。
观察:
- AND 函数出现异常,如 F 列所示,即 header
M=4&D>=6
.
- OR 函数出现异常,如 H 列所示,即 header
M>4 or M=4&D>=6
.
在 google 工作表和 Microsoft excel 上都观察到了这种行为。
这是语法问题吗?
使用:
={"Tax year"; ARRAYFORMULA(IF(ISBLANK(A2:A),,
IF((MONTH(A2:A)>4)+((MONTH(A2:A)=4)*(DAY(A2:A)>=6))),
YEAR(A2:A)&"-"& YEAR(A2:A)+1,
YEAR(A2:A)-1 &"-"&YEAR(A2:A)))}
- 我正在尝试定义一个函数来计算日期所在的纳税年度。
- 我想使用 array-formula 来做到这一点,让它成为 auto-generated
这是我拥有的完整解决方案:
=ARRAYFORMULA(
IF(
ROW(A:A)=1,
"Tax year",
IF(
ISBLANK(A:A),
"",
IF(
OR(MONTH(A:A)>4, AND(MONTH(A:A)=4, DAY(A:A)>=6)),
YEAR(A:A)&"-"& YEAR(A:A)+1,
YEAR(A:A)-1 &"-"&YEAR(A:A)
)
)
)
)
但我注意到它的行为方式与我期望的不同。所以我试着把它分解成更小的步骤。这是一个 spreadsheet demo,其中除了带有青色 header 的列之外的所有列都是使用 array-formulae.
生成的注意:
- 该演示具有欧洲日期格式。
- 这用于计算英国纳税日期,该日期从 4 月 6 日开始,因此逻辑围绕该特定日期。
观察:
- AND 函数出现异常,如 F 列所示,即 header
M=4&D>=6
. - OR 函数出现异常,如 H 列所示,即 header
M>4 or M=4&D>=6
.
在 google 工作表和 Microsoft excel 上都观察到了这种行为。 这是语法问题吗?
使用:
={"Tax year"; ARRAYFORMULA(IF(ISBLANK(A2:A),,
IF((MONTH(A2:A)>4)+((MONTH(A2:A)=4)*(DAY(A2:A)>=6))),
YEAR(A2:A)&"-"& YEAR(A2:A)+1,
YEAR(A2:A)-1 &"-"&YEAR(A2:A)))}