簡體   English   中英

如何編寫Excel公式以比較年初至前幾年並計算閏年?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM