我正在尝试制作一个根据输入的年份/月份动态变化的日历。
单元格 F11 的单元格公式为:
=IF(OR(E11="",VALUE(E11)>EOMONTH(DATEVALUE(1&B5&Year),0)-EOMONTH(DATEVALUE(1&B5&Year),-1)-1), "",E11+1)
仅供参考,电子表格的链接:
https://1drv.ms/x/s!AqB4pWPNC0Uche8l1X-RaumvmRwBkA?e=yhlIb2
答案1
“您输入了太多参数...”与公式的长度无关,它只是意味着您将它放在了错误的位置(可能在 IF 内但没有嵌套它。)
最简单的使用方法IFERROR
是将整个公式包装在其中,如下所示:
=IFERROR(IF(OR(E11="",VALUE(E11)>EOMONTH(DATEVALUE(1&B5&Year),0)-EOMONTH(DATEVALUE(1&B5&Year),-1)-1), "",E11+1),"")
答案2
如果您想在冗长的公式中隐藏 #VALUE!,可以使用 IFERROR 函数,但如果参数太多,该函数可能不起作用。一种解决方案是将公式拆分为较小的部分,并对每个部分应用 IFERROR。这样,如果发生错误,公式将返回一个空字符串。另一种解决方案是,如果您使用的是旧版本的 Excel,请使用 ISERROR 而不是 IFERROR,因为它的作用相同。
选项 1:将公式拆分为更小的部分,并对每个部分使用 IFERROR。
原配方:
=IF(OR(E11="",VALUE(E11)>EOMONTH(DATEVALUE(1&B5&Year),0)-EOMONTH(DATEVALUE(1&B5&Year),-1)-1), "",E11+1)
重写公式:
=IF(OR(E11="", IFERROR(VALUE(E11)>IFERROR(EOMONTH(DATEVALUE(1&B5&Year),0)-EOMONTH(DATEVALUE(1&B5&Year),-1)-1, ""), "")), "", E11+1)
选项 2:使用 ISERROR 而不是 IFERROR。
原配方:
=IF(OR(E11="",VALUE(E11)>EOMONTH(DATEVALUE(1&B5&Year),0)-EOMONTH(DATEVALUE(1&B5&Year),-1)-1), "",E11+1)
重写公式:
=IF(OR(E11="", IF(ISERROR(VALUE(E11)>EOMONTH(DATEVALUE(1&B5&Year),0)-EOMONTH(DATEVALUE(1&B5&Year),-1)-1), ""), ""), E11+1)
请注意,重写的两个公式应该具有与原始公式相同的结果。