我创建了以下公式,以根据用户月份条目选择创建日历。
{=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.无论用户输入的是哪个月,最后一天都会返回错误。这是使用十二月的示例(我隐藏了列以节省空间):
正如你所看到的,除了最后一天之外,每天都有效。我以为是因为有31天,所以我用了30个月的一个月:
结果相同。公式有问题,但我无法弄清楚原因。
答案 0 :(得分:2)
我不能保证完整地剖析你的公式,虽然我会告诉你错误的原因(顺便说一下,我会认为这会产生#REF!错误,而不是#N / A - 你能说清楚吗?)
如果L6中的日期是月末,则此部分(在公式末尾):
= ROW(INDIRECT( “1:” &安培; EOMONTH($ L $ 6,0) - $ L $ 6))
将解决(因为在本例中,与L6中的条目相关的月末与L6中的值完全相同):
= ROW(INDIRECT( “1:” &安培; 0))
是:
= ROW(INDIRECT( “1:0”))
并且,由于1:0不是有效的范围引用,因此这部分错误(尽管错误与#REF!,这就是我问你的原因)。
此致