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

发布时间:2020-01-04 来源:网络


今天技巧妹与大家分享3个常用,但会出现Bug的解决方法。


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虽小,却隐藏大隐患,需及时铲除。


怎么样,这3个ExcelBug,你会解决了吗,若有什么问题,欢迎在下方留言。