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是做什么的

Excel函数的c#代码

根据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;