Excel #价值!错误 - 但公式正确

Excel #Value! error - but correct formula

我有一个 Excel 2010 工作簿,其中包含以下公式:

=EOMONTH("01"&TEXT(B7,"MMM")&IF(MONTH(CMVAR)<4,TEXT(YEAR(CMVAR)-1,"YYYY"),TEXT(YEAR(CMVAR),"YYYY")),0)

当您在单元格中并按 Enter 时,它会解析,但是当工作簿首次打开或刷新时,结果是 #VALUE!。以下是组件:

B7 =IF(OR(MONTH(CMVAR)>6,MONTH(CMVAR)<4),"Apr",IF(MONTH(CMVAR)=4,TEXT(EDATE(CMVAR,-3),"MMM"),IF(MONTH(CMVAR)=5,TEXT(EDATE(CMVAR,-3),"MMM"),TEXT(EDATE(CMVAR,-3),"MMM"))))

等于Apr

CMVAR 31/03/2015

使用该公式是因为在 4 月、5 月、6 月(前三个会计期间),我们需要比较数据显示在上一财政年度的 12 期网格中。从 7 月开始,我们将获得当年的可比数据,因此网格可以从 4 月开始。确定月份后,我将尝试计算该期间的结束日期,考虑到一月、二月和三月实际上是财政年度的第 10、11 和 12 期,因此年份元素如果 CMVAR 显示日期在那些月份中的任何一个,则公式的末尾将是前一年。

是否有更好的方法来避免错误或修复它?

您的 EOMONTH 公式出错了,因为 TEXT 部分的格式应为 TEXT(date,"YYYY")。 YEAR(CMVAR) 给出数字而不是日期。

您可以改用

=EOMONTH("01"&TEXT(B7,"MMM")&IF(MONTH(CMVAR)<4,TEXT(EDATE(CMVAR,-12),"YYYY"),TEXT(CMVAR"YYYY")),0)

或者这可能比使用 TEXT 函数更容易

=EOMONTH("01"&B7&IF(MONTH(CMVAR)<4,YEAR(CMVAR)-1,YEAR(CMVAR)),0)

您的 B7 公式还可以,但可以简化为

=IF(OR(MONTH(CMVAR)>6,MONTH(CMVAR)<4),"Apr",TEXT(EDATE(CMVAR,-3),"MMM"))

对于 CMVAR 的不同值,您期望得到什么结果并不完全清楚,但看看您的公式,我想您希望它是:

您可以使用以下公式计算Result

=EOMONTH(CMVAR,-MAX(MOD(MONTH(CMVAR)-4,12),3))

如果上面的图片没有显示您预期的输出,请您准备类似的table?

编辑:

为了解释问题是如何解决的,我创建了额外的中间计算列:

  • CCMVAR 和预期结果之间的月份差异 - 目标是找到返回此数字的公式
  • D计算CMVAR的月份
  • E - 函数 MOD returns 数字后的余数除以除数 (12)。
  • E 匹配 C 的所有值,除了 012,所以在 F 列函数 MAX 将这些值替换为 3