如果要移位日历天数组的IF公式将在本月的最后一天返回#N / A

我创build了以下公式来创build基于用户月份条目select的日历。

{=IF(COLUMN($M$5:$AT$5)-COLUMN($M$5)+1>SUMPRODUCT(0+(WEEKDAY(ROW(INDIRECT($L$6&":"&EOMONTH($L$6,0))),1)<8)),"",TRANSPOSE(SMALL(IF(WEEKDAY(ROW(INDIRECT($L$6&":"&EOMONTH($L$6,0))),1)<8,ROW(INDIRECT($L$6&":"&EOMONTH($L$6,0)))),ROW(INDIRECT("1:"&EOMONTH($L$6,0)-$L$6)))))} 

该公式很有用,但是,这个月的最后一天返回#N / A。 无论用户input什么月份,最后一天都会返回错误。 这是一个使用十二月的示例(我隐藏了列以节省空间):

在这里输入图像说明

正如你所看到的,除了最后一个之外,每一天都在工作。 我以为是因为有31天,所以我用了30天的一个月:

在这里输入图像说明

同样的结果。 这个公式有一些问题,但我不明白为什么。

虽然我会告诉你错误的原因(顺便说一下,我会认为这会产生一个#REF!错误,而不是#N / A – 你可以吗?澄清?)

如果L6中的date是月末,那么这部分(在公式的末尾):

= ROW(INDIRECT( “1:” &EOMONTH($ L $ 6,0) – $ L $ 6))

将会解决(因为与L6中的input有关的月份的结尾在这种情况下与L6中的值完全相同):

= ROW(INDIRECT( “1:” &0))

这是:

= ROW(INDIRECT( “1:0”))

而且,由于1:0不是有效的范围引用,所以这部分错误(尽pipe#REF!错误,这就是为什么我问你这个问题)。

问候