今天我们说的函数相信你一定不常用到,因为它们的作用是甄别的单元格的数据类型。我们在工作中编写的公式或实现某些功能,或多或少的都存在对数据类型的依赖,当不满条件的时候,通常返回一个excel预制的错误代码,并不能很好的指导我们的如何去纠正这些问题,我们如何设计让错误提示变得有用途的,需要借助类型检测函数的能力啦,今天我们就一起了解一下excel包含的类型检测函数有哪些?
isblank函数
功能:识别参数是否包含任何内容,返回true则表示参数为空,false则说明参数中有数据。这里的空的没有任何数据内容,设置不设置样式都对不影响函数对内容的判断;函数使用结构如下:
isblank函数的结构
它虽然只有一个参数,不过支持参数的类型上一样儿也不少啦。从结构图上看,是不是样式很唬人,不过就其根本无非四类数据,数字,文本,逻辑值,错误代码;哪你要说它不就是检测空值的函数吗?有什么用啊,我平时都用不上它,了解它有什么用啊?不过用它设计的功能你一定用过,那就是ctrl + g,弹出“定位窗口”,点“定位条件”,选其中的”空值“,确定就找出所选范围的所有空值的单元格了,是不是很熟悉啊。如果不了解你可以翻看之前的文章:excel基础知识-解读定位条件,让选择区域so easy!
如果你说,我判断空不空从来都是用a1=就好啦,还用到着用个函数来判断吗?用=来判断确实挺好用,也能解决大部分的问题,但它是有盲区的,从表达式结构来看,它只侧重的单元格最终的计算结果是否等于空,并不能说明它没有数据,比如说公式或函数;如果让你设计开发自动求和,你需要将求和的结果存入空的单元格中,这时就需要用isblank函数来确认的输出结果的单元格啦!说了这么多,我们还是近距离的确认一下,它对各种类型返回值是什么吧!
其实通过结构图,聪明的你是不是发现什么啦?没有错,isblank支持的表达式,函数值以及自定义名称,都有可能出现一个单元格中,不论最终的运算的结果是什么,它最终返回为false;这里需要详细说明一下引用单元格和引用范围的判断规则:
引用单元格:上面提到了=存在盲区,我们就以判断a1单元格是否为空为例:公式1=if(isblank(a1),0,1),公式2=if(a1=,0,1),当a1=if(true,,false)时,你就会得到截然不同的结果,公式1=1,公式2=0,而在用excel设计复杂功能时,大部分都是以前一步的结果为基础,进行带入各种公式进行运算,逻辑上再小的误差都可能会引发致命的bug,当然=判断也有它的使用场景,功能相对简单,没有太多复杂的计算情况下,它输入简单,操作简洁也是不错的选择。
引用范围:原型=isblank(引用范围),如果你想isblank返回true,必须具备2个条件,1:引用的范围必须为单行或单列,2:所选范围内必须包含判断公式
至于字符串就更加明显了,如果对单元格限制的为文本内容,来判断是否为空,完全可以用=“”来处理;如果你判断出非空的内容是不是字符串就需要下面讲的内容:文本判断函数。
istext函数 和 isnontext函数
功能:istext和isnontext函数,判断参数是否是文本,参数一样,结果正好是相反,我给这种成对出现的函数取个好记的名字:镜面函数,是不是有点像你和镜中你的关系,外貌相似,却在方向上与现实的你正好相反;istext函数如果参数是文本返回true,否则返回false,isnontext则是如果是文本返回false,否则返回true;
检测文本数据类型的函数
为了方便我们理解和记忆,我们就用个例子来近距离观察一下这种函数的用法,我们现在有一列数据,里面有文本,文本数字,数字组成,我们将这列数据进行求和计算并得出结果?限定条件为我之前的文章里说过的知识(注:不修改的单元格格式),我们该如何实现呢?
思路:创建一个辅助列,用于存储文本数字转化成数字和数字值,文本则转化成0,然后求和;源数据不动为了核查计算是否正确;
首先我们创建一个辅助列,我在前面文章中说过文本数字转化成数字的只需通过数学运算符就可以了,我今天用的加法运算符,数字为0,这里就举15个数据,数据太多不利于展示,这个方法是适合多少数据都ok的,源数据列在a2:a16,为了区别文本和数字,数字的格式为保留2位小数,好了开始我们的表演吧。
我们用istext函数来是区分数字和文本,如果是文本就进行转换,数字则原样显示,用公式描述=if(istext(a2),a2+0,a2),这样文本的内容就会强制转化数字,转化不成的则会返回#value!;
当我们看到结果的时候,这并不是我们想要的结果,只需将#value!转化为0即可,这里我用到之前说的函数iferror,想了解的同学可以查看文章:excel基础知识解析[处理错误];公式优化后为:=iferror(if(istext(a2),a2+0,a2),0),搞定,看看是不是所有要转化成数字的都已转化完成啦,最后选中辅助列的求和数据点自动求和,也可以其他任意单元格输入=sum(b2:b16)也可以;
对纯数字求和的操作步骤
为了方便手机的观看,发现内容过长,会影响阅读体验,这里后期会调整的文章内容,这里顺便说一下,上述的案例有点牵强,其实上面的公式可以再简化,而不影响计算结果,这里留两个小疑问,你可以尝试用isnontext函数改写上面的公式或你有更简化的答案欢迎下面留言,我在下文公布最简公式。
这里说点我的学计算技术的体会:计算机技术重在多实践而非很多的理论,重思路非知识点,实践会让我们体验到某函数功能的细微差别,在用到或修改其他的模板更得心应手,思路可以让我们用最少的知识点来做更复杂的功能,更完善的功能!希望我的描述能让你有所收获,下期再见!