2015-04-24 119 views
-1

我有一個Excel 2010工作簿中的公式爲:Excel #Value!錯誤 - 但正確的公式

=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

CMVAR31/03/2015

公式被在四月,五月,六月(前三個會計期間),我們要求的比較數據,從上一財年的12段表格顯示,因爲使用。從今年7月份開始,我們將有來自當年的可比數據,因此電網可以從4月份開始。一旦確定月份,我正在設法計算該期間結束的日期,考慮到1月,2月和3月實際上是本財年的第10,11和12期,因此年份元素如果CMVAR顯示該日期在任何這些月份中,則該公式將是上一年。

有沒有更好的方法來避免錯誤或解決方法?

+0

替換這些值是否需要'B7'採用文本格式? – BrakNicku

+1

'= TEXT(YEAR(CMVAR)-1,「YYYY」)'會返回給你嗎? – pnuts

+0

是的,當你使用TEXT函數時會出現一些奇怪的現象 –

回答

1

它並不完全清楚你對CMVAR的不同值有什麼結果,bu牛逼看着你的公式,我想你希望它是:

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功能MAX3
+0

謝謝。我在星期一之前無法嘗試,但不好意思嘗試一下您的建議,並讓我知道我如何繼續。問候。 – user2916488

+0

這個解決方案確實做到了我所做的,所以我會接受它作爲答案,但如果我誠實,我不完全確定它在做什麼!它看起來像是一個月的值並減去4,然後將結果除以12並乘以-1。然後用結果偏移當前日期 - 是否正確? – user2916488

+0

@ user2916488我編輯了我的答案,以添加一步一步的解釋。 – BrakNicku

0

您的EOMONTH公式出錯了,因爲TEXT部分的格式應該是TEXT(date,「YYYY」)。年(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")) 
+0

嗨,湯姆,我嘗試了上面的解決方案,不幸的是它仍然給了#value!錯誤之後,我已經讚賞它。我已經將你對B7的建議帶上了 - 比我原來的更容易閱讀!感謝您的幫助:) – user2916488