Excel函数的c#代码
本文关键字:代码 函数 Excel | 更新日期: 2023-09-27 18:18:21
所以我试图将这个Excel单元格计算转换为c#,但我不能真正理解它在做什么。我把EDATE
的定义看了一遍,仍然没有太大的意义。
IF(EDATE(B25,-12)>A25,((EDATE(B25,-12)-A25)/(EDATE(B25,-12)-EDATE(EDATE(B25,-12),-12)))+1,(B25-A25)/(B25-EDATE(B25,-12)))
B25 = End Date
A25 = Start Date
它本质上是在计算一年的一小部分。应该很容易做到,但我不完全确定这个EDATE
是做什么的
根据EDATE,你主要是在处理12 months before the End Date (B25)
。
鉴于此,这似乎在说:
如果开始日期比结束日期早12个月,则:
(开始日期比结束日期前一年的时间长度除以一年)+ 1
:
开始日期比结束日期早的时间长度除以1年。
我真的不知道Excel是如何处理日期运算的,也不知道这个函数的意义是什么,但这是我的伪代码。
实际上,它只是检查我提到的if
条件,然后如果条件为真,则将整个算术抵消一年。
编辑
好吧,一些快速的研究表明,Excel的日期算术纯粹以天为单位,所以12/1/1900 - 1/1/1900 = 335
天。在任何一个日期上加上一个时间都会使它成为一天的一小部分。
鉴于此,这个Excel公式似乎试图计算两个日期之间的小数年差。
这是一段应该提供它的粗略代码:
TimeSpan span = endDate.Subtract(startDate);
double years = span.Days / 365.25;