工作表在这里https://www.dropbox.com/s/kapavvj6yc0nhdr/recruitment%20%282%29.xls
我有从我们的IT部门收集的数据,它显示了我想要分析的日期。
当我使用简单的减法函数=(A1-A2)计算两个日期之间的差异时,我得到#VALUE或数字错误的结果。我试图谷歌它,我试图使用不同的功能无济于事。
我在工作表中发现的是,某些日期显示为我查看时的日期(CTRL +`),有些日期显示为序列号。所以这可能是我想的问题。
我需要正确计算此工作表中两个日期之间的差异,没有错误。任何意见都非常感谢。
答案 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")