我如何编写一个Excel公式来比较年初至前几年,还要考虑闰年?
我试图比较截至今天为止的前四年(例如2016年,2015年,2014年6月6日等)的相同date和月份。 我决定每年计算一年以来的天数,并将每年的天数总和。
为了确定一个date是否应该包括在年度至今的比较中,我使用了公式,我的date在A1单元格中:
=IF((A1-DATE(YEAR(A1),1,1)+1)<=(TODAY()-DATE(YEAR(TODAY()),1,1)+1),1,0)
我正在寻找解决闰年多余的问题的方法。 换句话说,2月28日以后,闰年的日数总是偏离1,而在非闰年尝试使用29日的剔除将会返回错误。
我想调整这个公式,但我打算使用不同的函数和公式,如果它得到正确的结果。
你可以查看关于二月二十九日的任何信息。 如果发生错误,你知道它没有闰年。 用=IFERROR(;)
捕获该错误。
假设这样的表结构:
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日前四(不包括当前)年份的平均值(今天是01/01/2016):
=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
说明
要仅select代表相同月份和date的那些行:
(MONTH(A:A)=MONTH(compare))*(DAY(A:A)=DAY(compare))
只select过去4年的数据(不包括当前数据):
(YEAR(A:A)>YEAR(compare)-5)*(YEAR(A:A)<YEAR(compare))*
我们感兴趣的实际值:
(B:B)
在过去的四年里,平均值除以4。 这假设没有丢失的数据可能是一个问题。 您可以使用另一个SUMPRODUCT(将B:Breplace为1)来计算结果行数并除以该数字来处理这种情况。 这似乎是相当缓慢,但它的作品。
注意
出于性能原因,您不应该在公式中使用A:A(全列),只是使用您需要的实际范围,这可能会快得多。