跟我一起,穿越时间!
回顾一下,在连载1和连载2的内容里,我们复习了Excel中最基本的数据类型,四大类型(文本字符型、数值型、逻辑型、错误值)的数据是Excel应用处理的基础,但是我们只孤立的知道他们的类型还不够,知道距离灵活运用还尚有较大距离,马克思主义哲学唯物辩证法告诉我们,联系具有普遍性、客观性和多样性,一个事物内部各个要素是相互联系的,那么Excel中的各种数据类型之间究竟有什么联系?
今天,我们走到Excel升级之路的连载3:数据类型检测与相互转换技巧
一、数据类型检测——实践是检验真理的唯一标准
首先考虑一个问题,对于已经存在于Excel单元格中的数据,我们如何确认其数据类型?
有人也许会说直接观察,凭借经验进行判断,但是这样做并不能够100%确定,而且函数公式运行过程中的一些数据也不会最终出现在单元格里。
不能确定意味着会出现差错,而关键时刻不出差错才可以扭转乾坤,东汉·班固《汉书·赵充国传》中的实例告诉我们:“百闻不如一见,兵难隃度,臣愿驰至金城,图上方略。”“百闻不如一见,百见不如一干”,通过实践进行检验才是不二法门。
Excel中提供了丰富的内置检测函数,而且非常方便使用,他们统称为is函数,我们通过is函数问Excel问题,Excel会以是(TRUE)或否(FALSE)来回答我们。
1、检测是否是文本字符型数据:istext函数
如果结果为TRUE,则检测内容是文本字符型数据。
从反方向来看,Excel中还有一个检测是否不是文本字符型数据的函数:isnontext函数
注意:空格是文本,空单元格不是文本,所以用isnontext函数检测空单元格A1是否不是文本?
答案:是,不是文本,Excel返回TRUE
2、检测是否是数值型数据 :isnumber函数
如果结果为TRUE,则检测内容是数值型数据。
我们再次以日期举个例,检测一下,可以看到日期型数字就是数值型数据。
在数值型数据中,偶数和奇数也是可以进行检验的,他们使用的就是is和英语中偶数even、奇数odd的单词组合。
检测是否是奇数:isodd函数
检测是否是偶数:iseven函数,不要忘记0是偶数。
3、检测是否是逻辑型数据 :islogical函数
如果结果为TRUE,则检测内容是逻辑型数据。
4、检测错误值和空单元格
既然Excel在遇到错误时会返回不同的错误值,那就说明这些错误值也是可以区分的。
Excel中提供了iserror函数、isna函数、iserr函数来进行检验,他们稍有差别,这里不展开,通过Excel的提示可以进行选择。
另外,Excel中还有一个检测是否为空单元格的函数:isblank函数。
前面已经讲过,空格是文本excel比对数据差异,空单元格不是文本,isblank函数可以告诉我们,空单元格的确就是空。
5、其他
不知道你注意到了没有,上面的各种检测函数一次只能检测一种数据类型,也即我们可以通过他们验证自己的猜想,那么能不能让Excel主动告诉我们数据是什么类型呢?
当然可以!
最后还有两个神级检测函数:type函数和error.type函数,他们可以以特定的数值返回检测结果,特定的数值就代表要检测的数据的数据类型,这是在函数公式中的高级用法。
例如用type函数检测一下“穿越时间”,其返回值是2,对照下面的编码表,我们可知Excel告诉我们“穿越时间”是文本字符型数据。
二、数据类型转换技巧
Excel中的数据类型并不是孤立的,彼此之间可以相互转换。
如何将一种类型的数据转换为另一种类型的数据呢?
通过可视化的“设置单元格格式”是最简单的方法,但是,如果涉及到Excel函数、公式甚至编程应用,“设置单元格格式”就不是最好的方案了。
另外,我们有时会感觉很难读懂别人写的公式的意思,其中有一个重要的原因就是对数据类型转换应用的不灵活,因此掌握转换数据类型的函数或特殊运算、特殊公式符号是十分必要的。
接下来,我们从输入文本型数据开始,按照文本型数据、数值型数据、逻辑型数据依次展开,看一看上文讲到的三种数据类型(文本型、数值型、逻辑型)可能出现的转换情况和技巧。
借助之前提到的英文单引号 ' ,输入文本字符型的文本数字:770
1、文本型数据的转换:文本型==》数值型
这是文本型数字转换为数值型数字的方法。为什么需要这种转换?因为文本型数字是不能参与数学运算的。为了进行加减乘除等运算,我们需要使用数值型数字。
(1)符号法:
在文本型数字前面加两个减号- -试试:
看到了没有,B1单元格中的770就变成了靠右对齐的数字型。
我们可以通过刚才学习的isnumber函数检测一下B1中的770是否为数值型,
结果为TRUE,确认无误。
换一下,在文本型数字的后面乘以1 (*1)
我们将文本型的770乘以1,也可以将它转换为数值型。
很奇特是不是?
类似地,通过除以1 (/1),求1次幂 (^1),加0 (+0) ,减0 (-0),也可以实现文本型数字向数值型的转换。
但是如果你想尝试加号法,例如=++A1 或 =+A1 则是不可以的,这样的结果仍然为文本型;
那么继续,
为什么最初的减号法 =- -A1可以,
为什么要用两个减号?
其实用一个减号也可以实现文本型到数值型的转换,不过这样值就变了,成了相反数。(=-A1,可以实现将A1中文本型的770转换为数值型的-770)
因此可以把两个减号的作用理解为负负得正。
同理,四个减号也是可以的。
偶数个减号都是可以的。
由此,上面更多的求1次幂^1,加0 ,减0就可以理解了。
基本都思路就是让文本型数字在保持实际值不变的前提下参与一下运算,文本型数字就转换为数值型了。
(2)函数法
我们可以通过n函数或者value函数,将文本型数字转换为数值型。
这里不需要特殊的介绍,直接使用函数即可。
2、数值型数据的转换:数值型==》文本型
(1)符号法:
除了最上面提到的英文单引号 'excel比对数据差异,还有其他方法可以使输入到Excel中的数值型数字转换为文本型数字存储。
来看一下,你清楚代码 &”” 的作用吗?
通过在单元格后追加&”” 代码,即可将数值型数字转换为文本型数字。
&是连接两个文本字符串(串连)的运算符。
“”是两个英文双引号。
A1中是数值型数据600,在B1中输入=A1&””之后,B1返回的600就是靠左对齐的文本型数字600
不过和采用英文单引号 ' 不同的是,Excel默认不会添加绿色的三角标记。
(2)函数法:
我们可以使用text函数将数值型数字转换为文本型数字。
Text函数的功能十分强大,它可以按照给定的格式将数值型数字转换为文本型数字。这里不详细展开。
3、数值型数据的转换:数值型==》逻辑型
数值型的数字也是可以转换为逻辑型数据的,这里需要借助一下if函数
=IF(A1,TRUE)
任何非0的数值型数字通过if函数都可以返回逻辑型TRUE
数值型数字0通过if函数可以返回逻辑型FALSE
这是一种比较巧妙的做法。
4、逻辑型数据的转换:逻辑型==》文本型
借助数值型转换为文本型时提到的特殊符号&”” 即可,但这种情况几乎不用。
5、逻辑型数据的转换:逻辑型==》数值型
(1)符号法
与上面文本型数字转换为数值型类似,逻辑值执行加减乘除的任意运算也可转换为数值型。
*1 /1 +0 -0 两个负号- – 乘幂^1都可以实现:TRUE会变成1,FALSE会变成0
另外,多个逻辑型数据本身可以直接执行运算(此时,TRUE相当于1,FALSE相当于0),结果也为数值型;
注意:在某些函数中,不支持逻辑值直接执行运算,原因是有些函数在不同的情况下会忽略非数值数据,必须先行转换为数值型之后才能在函数中进行运算。
下面是一个涉及SUM函数的实例,A1、A2中都是逻辑型数据TRUE,琢磨一下都是相加求和,运算的结果为什么有时是2有时是0?
公式
结果
=A1+A2
2
=SUM(A1:A2)
0
=SUM(A1,A2)
0
=SUM(–A1,–A2)
2
=SUM(TRUE,TRUE)
2
解释一下:
Sum函数会忽略单元格引用中的逻辑型数值和文本型数值,在这里忽略的意思可以认为sum把逻辑型数值和文本型数值当不存在来看待。
但是当我们把逻辑型数值和文本型数值直接输入sum函数中,当做sum函数的参数时,sum则不会忽略他们。
这个点以后还会再提及。
(2)函数法
直接使用上面提到的n函数也可以将逻辑型的数据转换为数值型。
综上,在写函数公式的时候,应该使用什么类型的数据就要写上什么类型的数据,有些时候,虽然数据类型不对,但似乎Excel也给出来正确的结果,这是函数底层的容错性起了作用,不过可想而知,那样的公式是多么混乱,多么容易让人混淆,看不明白是什么意思。
好了,以上就是连载3的全部内容,没有看过前面连载的可以点击头像或链接跳转:
穿越时间•Excel升级之路连载1:Office2010安装体验及个性设置
穿越时间•Excel升级之路连载2:打牢Excel 2010中的数据类型基础
更多精彩,敬请关注。
(原创连载,个人观点保留,禁止任何未经授权的非本人账号复制文章到其他平台发布)
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击网站首页每天更新
站 长 微 信: aiwo51889