1.4 修改非法日期和非法时间

很多情况下,从系统里导入的数据中,日期是非法日期,比如日期可能为数字(诸如20140128代表2014年1月28日),或者是看起来是日期,实际上却是文本型日期,这种非法日期必须修改为真正的日期。

1.4.1 使用分列工具快速修改非法日期

修改非法日期最简单的方法是使用“分列”工具,按照向导的操作,就可以迅速把非法日期修改为真正的日期。下面我们举例说明。

案例1-12

图1-42中的四个工作表的A列日期都是非法日期,这些日期都无法用来进行计算。修改这些非法日期的具体步骤如下。

图1-42 A列的日期是错误的

01 选择A列。

02 在“数据”选项卡中单击“分列”命令按钮,打开“文本分列向导”对话框。

03 单击2次“下一步”按钮,到“第3步”中,选择“日期”选项按钮,并在右侧的日期格式下拉列表中选择一个与工作表单元格日期匹配的格式,如图1-42所示。

比如表1和表2的日期格式都是“年月日”,那么就选择“YMD”;表3的日期格式是“月日年”,就选择“MDY”;表4的日期格式是“日月年”,就选择“DMY”。

图1-43 选择“日期”选项按钮,并选择对应日期格式

04 单击“完成”按钮,就得到真正的日期,如图1-44所示。

图1-44 得到真正日期

1.4.2 使用函数处理非法时间

在实际工作中,一些人在记录时间时,可以把诸如2小时34分钟记录为2.34小时,而不是记录为2:34,这样就无法进行时间的计算了。遇到这样的问题,需要认真处理。

案例1-13

图1-45是以带小数点数字表示的时间,比如2.33表示2小时33分钟。这种数据表达方式,主要是出于快速输入考虑的,但是这种数据并不能直接用于汇总分析,而必须把小数点数字时间转换为真正的时间,如将2.33转换为2:33。

要解决这样的问题,需要联合使用相关的数学函数和时间函数,如图1-46所示,在单元格C2输入下面的公式,然后往下复制,即可将带小数点数字表示的时间转换为真正的时间:

=TIME(INT(B2),(B2-INT(B2))*100,0)

图1-45 以带小数点数字表示的时间

图1-46 真正的时间

1.4.3 考勤数据的快速处理

从考勤机导出的数据,很多情况下时间和日期被保存在了一个单元格,并且是文本格式,需要先进行处理,以便以后分析每个人、每个部门的出勤情况,计算迟到、早退扣款或计算加班费等。

案例1-14

图1-47是从指纹机导出的某个月所有员工的考勤数据,现在要求统计每个人迟到、早退、未打卡情况,分析每个人的签到、签退以及公司的平均出勤水平。公司的出勤时间规定是8:00-17:30。

01 首先利用分列工具对D列进行分列(分隔符号是空格),并注意在分列第三步把日期转换为真正日期,得到如图1-48所示的表格。

图1-47 原始刷卡数据

02 在右侧插入两个辅助列,用于保存签到情况和签退情况,此时需要使用函数进行判断,公式如下:

单元格G2:=IF(E2<14/24,E2,"未打卡")

单元格H2:=IF(F2<>"",F2,IF(E2>=14/24,E2,"未打卡"))

图1-48 分列日期和时间

图1-49 判断签到时间、签退时间以及未打卡情况

所得结果如图1-49所示有了这个表格,就可以使用透视表分析考勤数据了,图1-50就是一个例子。

图1-50 每个员工签到、签退汇总表