Excel #Value!错误 - 但正确的公式

时间:2015-04-24 15:37:22

标签: excel excel-2010

我有一个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月开始。一旦确定月份,我试图弄清楚该期间结束的日期是什么,考虑到1月,2月和3月实际上是会计年度的10,11和12期,所以如果CMVAR显示在任何这些月份中的日期,公式的年份元素将是上一年。

有没有更好的方法来避免错误或修复方法?

2 个答案:

答案 0 :(得分:1)

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

enter image description here

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

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

如果上面的图片没有显示您的预期输出,您可以准备类似的表吗?

修改

为了解释问题是如何解决的,我创建了其他具有中间计算的列:

enter image description here

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

答案 1 :(得分:0)

您的EOMONTH公式出错了,因为TEXT部分的格式应为TEXT(日期,&#34; YYYY&#34;)。 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"))