Excel日期数据无法计算两个日期之间的差异?

时间:2014-02-25 18:23:23

标签: excel

工作表在这里https://www.dropbox.com/s/kapavvj6yc0nhdr/recruitment%20%282%29.xls

我有从我们的IT部门收集的数据,它显示了我想要分析的日期。

当我使用简单的减法函数=(A1-A2)计算两个日期之间的差异时,我得到#VALUE或数字错误的结果。我试图谷歌它,我试图使用不同的功能无济于事。

我在工作表中发现的是,某些日期显示为我查看时的日期(CTRL +`),有些日期显示为序列号。所以这可能是我想的问题。

我需要正确计算此工作表中两个日期之间的差异,没有错误。任何意见都非常感谢。

3 个答案:

答案 0 :(得分:2)

两件事:

首先,您的日期采用dd/mm/yyyy格式,D2中的日期即22/11/2012/就是明证。考虑到这一点,J2中的正确公式应为=F2-$D2,向右拖动。原始公式正在减去错误的方式,这会导致负时间,因此会出错。

其次,如果您的区域设置阻止您将其视为默认设置,请将日期修改为正确的格式。其中一些被认为是字符串,一些是有效日期。这是日期的常见问题。在我看来,以下UDF运行良好。

Function ModifyDate(sDate As String) As Date
    Dim sDay As String, sMonth As String, sYear As String
    Dim divOne As Long, divTwo As Long
    divOne = InStr(sDate, "/")
    divTwo = InStrRev(sDate, "/")
    sDay = Left(sDate, divOne - 1)
    sMonth = Mid(sDate, divOne + 1, divTwo - divOne - 1)
    sYear = Right(sDate, 4)
    ModifyDate = DateValue(sMonth & "/" & sDay & "/" & sYear)
End Function

突出显示日期并像这样调用函数会导致所有日期转换为mm/dd/yyyy格式。

Sub ModifyRangeDates()
    On Error Resume Next
    For Each Cell In Selection
        Cell.Value = ModifyDate(CStr(Cell.Value))
    Next
End Sub

然后我们应用第一段中给出的公式,向下和向右拖动。最后,修改后的文件为here

享受。

答案 1 :(得分:0)

问题在于区域设置。电子表格是使用MM / DD / YYYY设置创建的。当日期以“DD / MM / YYYY”格式输入时,日期为12或更少的日期被解释为MM / DD / YYYY日期。否则它被视为文本。

我没有编写UDF,而是将公式放入相邻列中,以计算每个条目的“正确”日期。例如,我会插入一个名为“评估(计算)”的列,并使用以下公式:

=IF(ISNUMBER(H2),DATE(YEAR(H2),DAY(H2),MONTH(H2)),DATE(RIGHT(H2,4),MID(H2,FIND("/",H2)+1,FIND("/",H2,1+FIND("/",H2))-FIND("/",H2)-1),LEFT(H2,FIND("/",H2)-1)))

公式检查“日期”是否为数字,在这种情况下,它会反转月份和日期并生成日期值。如果是文本,则解析文本以提取正确的值。 (因为某些日期本月只有一位数字而变得更加复杂)

我会为每一列日期重复此操作,然后对结果进行计算。

答案 2 :(得分:0)

确保将结果列的格式设置为NUMBER,将其他列的格式设置为DATES。

尝试使用DATEDIF函数:

要获取与今天的日期和B2列中的日期值相差的天数:

=DATEDIF(B2, TODAY(), "d")