![](/img/trans.png)
[英]What function do I need for getting year-to-date % increase over prior year?
[英]How do I write an Excel formula to compare year-to-date to prior years & also account for leap years?
我試圖比較截至今日4年的同一天和當月(例如2016年6月6日,2015年,2014年等)的措施。 對於每年,我決定計算自年初以來的天數,並將我的價值總和到每年的天數。
為了確定日期是否應該包含在年初至今的比較中,我使用了我的日期在單元格A1中的公式:
=IF((A1-DATE(YEAR(A1),1,1)+1)<=(TODAY()-DATE(YEAR(TODAY()),1,1)+1),1,0)
我正在尋找解決閏年增加的額外日子問題的方法。 換句話說,在2月28日之后,在閏年中,日計數將始終為1,並且在非閏年中嘗試使用第29個月將返回錯誤。
我想調整這個公式,但是我願意使用不同的函數和公式,如果它能得到正確的結果。
假設這樣的表結構:
A:Date | B:Value
----------------------
01/01/2016 | 0
01/01/2015 | 1
01/01/2014 | 2
01/01/2013 | 3
01/01/2012 | 4
例如 - 計算1月1日(今天是2016年1月1日)前四年(不包括當前年)的平均值:
=SUMPRODUCT(
(MONTH(A:A)=MONTH(compare))*
(DAY(A:A)=DAY(compare))*
(YEAR(A:A)>YEAR(compare)-5)*
(YEAR(A:A)<YEAR(compare))*
(B:B)
) / (
SUMPRODUCT(
(MONTH(A:A)=MONTH(compare))*
(DAY(A:A)=DAY(compare))*
(YEAR(A:A)>YEAR(compare)-5)*
(YEAR(A:A)<YEAR(compare))*
1
)
)
對於上面的例子,結果是2.5
要僅選擇代表相同月份和日期的行:
(MONTH(A:A)=MONTH(compare))*(DAY(A:A)=DAY(compare))
要僅選擇前4年的值(不包括當前值):
(YEAR(A:A)>YEAR(compare)-5)*(YEAR(A:A)<YEAR(compare))*
我們感興趣的實際值:
(B:B)
過去四年的平均值除以4。 這假設沒有丟失的數據可能是一個問題。 您可以使用另一個SUMPRODUCT(將B:B替換為1)來計算結果行數並除以該數字來處理這種情況。 這似乎相當慢,但它的工作原理。
出於性能原因,您不應在公式中使用A:A(完整列),只需使用您需要的實際范圍,這可能會快得多。
你可以查看2月29日的任何信息。 如果發生錯誤,您就知道它沒有閏年。 使用=IFERROR(;)
捕獲該錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.