分享

这3个Bug,连Excel高手也不明白

 L罗乐 2019-02-12

1、为什么数据明明不一样,但是用条件格式设置后却显示全部重复?

从表格数据看,编号的前15位数字都是一致的,但后面数字不一样,确实不该为重复值。为了进一步确认上面条件格式设置的结果,我们再用函数公式来检测一遍:

我们输入公式:=IF(COUNTIF($F$2:$F$13,F2)>1,''重复'',''''),往下填充

显示的还是重复的结果!

这是为什么呢?原因就在于,在Excel中数字的计算精度只限制在15位以内,超过15位以上的数字,系统会自动默认当成0来处理。我们需要把15位之后的数字也加入进去进行统计,才能正确检测出重复值,所以这里我们输入另外一个公式:

=IF(COUNTIF($F$2:$F$13,F2&''*'')>1,''重复'','''')

这次我们可以看到结果显示为空,即没有重复数据。接下来我们再看下条件格式设置的结果:

可以看到没有显示出填充颜色的单元格,也就是说现在的编号数据里没有重复值,当我们把所有数字都录入一样的时候才会显示出重复值。

说明:这里我们在公式后面加上了&''*'',意在将15位之后的数字当做文本进行识别统计,这样才可以准确地识别出是否重复。

2、为什么我的表格出现找不到对象的对话框?

这里我们要先知道在Excel中如何找到对象,方法如下:

按快捷键F5或者Ctrl G打开定位对话框,之后选择定位条件,这里勾选对象即可。

如图所示:

知道怎么找对象之后,我们来看下在Excel中为什么会找不到对象?

第一种原因是你的表格中没有对象,也就是表格中没有相对应的图片或图形,所以这时候你当然是找不到了,若直接插入一些图片,再进行查找,你就会发现很容易就找到了。

具体操作如下:

第二种原因是对象隐藏了,这样你自然也是找不到的。那如何显示呢?

点击文件——选项——高级,之后在此工作簿的显示选项下,在对于对象显示的方式,我们点击全部,最后确定即可。

具体操作如下:

(如果没看清动图的操作,可以查看下图。)

PS:若是隐藏对象,将表格复制为图片格式也是不能用的,会出现以下情况哦。

3、为什么明明工作了10个月,却只拿9个月的薪资?

DATEDIF这个隐藏函数来计算两个日期之间的天数、月份和年数,在实际工作中主要应用于员工年龄、工龄计算和生日提醒,功能不可小觑。然而,在使用这个函数过程中,你有没有发现这里面的一个Bug呢?虽然问题不大,但实际关乎大家的切身利益,比如你明明工作了10个月,却只拿9个月的薪资,为什么呢?

下面我们先来看一下DATEDIF函数的语法:

DATEDIF(起始日期,结束日期,返回的时间单位代码)

时间单位代码包括:

“y”返回时间段中的整年数;

“m”返回时间段中的整月数;

“d”返回时间段中的天数;

“md”返回两个日期的天数之差,忽略年和月;

“ym”返回两个日期的月数之差,忽略年和日;

“yd”返回两个日期的天数之差,忽略年。

如下图,我们要统计离职员工在公司的实际工作月份,输入公式:=DATEDIF(H2,I2,''M''),下拉填充。

乍一看好像没什么不对,实际上这里面已经出现了错误值。

这里面有3项数据出现了问题:

1)、2018/5/31到2018/11/30 实际上刚好满6个月

2)、208/8/31到2018/9/30 实际上刚好满1个月

3)、2018/2/28到2018/5/29 实际上不满3个月,应为2个月

为什么会出现这样的错误呢?

这里面分为两种情况,前面两项数据的起始和结束日期均为当月的最后一天,而且起始日期的天数均大于结束日期的天数,用DATEDIF函数进行计算,会认为未足月而得出错误值;

最后一项数据则是由于2月份的特殊性,起始日期也是当月最后一天,结束日期虽不足月但天数大于起始日期天数,系统计算则认为已足月,也导致了错误值的出现。

那么该如何来解决这个Bug?

这里核心问题在于当月月末最后一天和次月第一天的关系,当起始和结束日期都为当月最后一天,我们可把天数递增一天,均变为次月的第1天进行计算。这里我们可以输入公式:

=DATEDIF(IF(DAY(H2 1)=1,H2 1,H2),IF(DAY(I2 1)=1,I2 1,I2),''M''),下拉填充即可得到正确结果。

Bug虽小,却隐藏大隐患,需及时铲除。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多