本章学习几个零散、实用、简单的函数。
CELL函数可以用来提取相应单元格的信息,本节主要使用CELL函数提取当前工作簿的路径信息。
1.基础语法
我们来看一下怎样用函数提取当前工作簿的路径信息。
相应单元格的信息:
公式中的第一个参数info_type共有12个不同的值,如表8-1所示,其中很多值并不常用,了解即可。
表8-1 CELL函数参数
这里单独说一下CELL函数公式中的第二个参数reference,在Excel帮助中有这样一句话:如果省略,就将info_type参数中指定的信息返回最后更改的单元格。也就是说,如果你省略了reference,现在它的结果可能是你当前工作簿的信息,当你修改另一个工作簿的内容时,这个单元格的值就会变成刚刚修改的工作簿的相应信息。
在一些高级用法中,会故意省略此参数以达到特殊效果。本章所讲的内容不省略这一参数。
2.案例:获取当前文件路径信息
在表8-1中的12个参数中,比较常用的是“contents”和“filename”,对于实际工作来说,“filename”更具有实际意义,可以提取文件的路径信息。去繁从简,这里只讲“filename”参数的使用。
我们选择任意一个单元格,如图8-1所示,输入公式:
图8-1 获取当前文件路径信息
公式中我们写了第二个参数$A$1,就是告诉Excel要得到的是当前工作表的路径信息。第二个参数可以是任意单元格,然而个人习惯用$A$1(A1),因为这是表格的起点,看上去也会比较好看。如果省略了第二个参数,就会得到“最后更改的单元格”的路径,值也会相应改变。
现在看看结果,当前文件储存的路径、工作簿名称、工作表名称一应俱全。
之后如果你想提取任意信息,只要充分观察字段特点,观察中括号“[]”的位置,再与之前的各个文本函数结合就可以了。
在某些场景,我们可以将某个信息重复n次,以强调表达或直观展示差异。
1.基础语法
使用REPT函数可以将相应的字符或字符串重复n次,它的基础语法为:
REPT是英语Repeat的缩写,表示重复。它的语法比较好理解:把text重复number_times次。
2.将字符重复n次
图8-2 所示为REPT函数的基础用法,可以看出每个公式都完成了“重复”的任务。
图8-2 REPT函数基础用法
例如,C9单元格是将“-”重复10次,公式为:
C11单元格是将“abc”这3个字母重复10次,公式为:
在Excel中存在几个特殊字体Wingdings、Wingdings 2、Wingdings 3,它们对于数字和字母都返回不同的小图标,在工作中可以适当考虑使用。
例如,C15单元格的字体为Wingdings,显示哭脸与笑脸,对应的是大写英文字母L和J:
3.案例:制作条形图
一说到制作图表,很多人就会想到插入图表,然后进行调整。有没有想过完全使用函数来制作图表呢?
如图8-3所示,C、D列随机模拟一些标签及销售数据,然后在E22单元格输入以下公式,并向下复制到E31单元格:
图8-3 REPT函数制作条形图
注意,你做出来的图表效果可能如图8-4所示,都是普通的竖线,并无条形图的效果。
图8-4 条形图半成品
这时需要选中E22:G31单元格区域,将字体更改为“STENCIL”,如图8-5所示。
图8-5 更改字体
在英语书写过程中,由于不规范的输入会产生多余的空格,本章通过TRIM函数来处理这种不规范的情况。
1.基础语法
TRIM函数的作用是清除空格,基础语法为:
它的作用是清除单词之间的单个空格外的文本中所有的空格,如文章前后空格。其实它的作用就是把英文的书写变得更规范。
2.删除多余的空格
我们时常看到一些不规则的内容,如C9单元格有这样一句话:“Welcome to ExcelHome”,有很多的空格,简直太浪费资源。
在C10单元格中输入公式“=TRIM(C9)”,然后得到:“Welcome to ExcelHome”,如图8-6所示,得到了标准书写结果。
图8-6 TRIM函数
每一个字符都有自己的编码,在一定范围内的数字都对应着不同的字符。
1.基础语法
这里同时介绍两个函数,这两个函数可以说是互为逆函数。
对应数字代码的字符:
对应字符的数字代码:
Excel帮助中对CHAR函数的参数number解释为介于1~255之间。这个适用于英文版Excel,而中文版的Excel不受此限制。
2.数字与字符之间的转化
这两个函数到底有什么作用呢?下面直接用公式来说明。
如图8-7所示,这是CHAR函数的结果与公式,它将每一个数字都翻译成相应的字符。
图8-7 CHAR函数
这里列出来的几个都是较为常用的。C10单元格的公式“=CHAR(65)”的结果为A, C11单元格的公式“=CHAR(97)”的结果为a,公式“=CHAR(41420)”返回的结果为“√”,公式“=CHAR(41409)”返回的结果为“×”。
单独说一下CHAR(41385),它得到的结果为“々”,这不是日文符号,等到后面讲LOOKUP函数时,再作介绍。现在只需记住41385对应“々”即可。
下面介绍CHAR函数的“兄弟”CODE函数,英文翻译为编码,所以它就是把相应的字符编码,变成你看不懂的数字,如图8-8所示。
图8-8 CODE函数
可以看到,F10单元格的公式“=CODE("A")”将A变成了65,F11单元格的公式“=CODE("a")”将a变成了97,同样还编码了√、×、々。
我们还可以对一些文字进行编码,如“刘备”,公式“=CODE("刘")”结果为49653,公式“=CODE("备")”结果为45496。那么刘备就是4965345496。
3.案例:生成字母序列
前面讲了怎样生成A和a,如果按顺序生成26个字母该怎样处理呢?下面以生成大写字母A~Z为例进行介绍。
公式“=CHAR(65)”结果为A,65对应的是A。把65按序数增加,试想一下,66,67,68,……是否对应B, C,D,……我们动手试一下,公式“=CHAR(66)”结果为B,公式“=CHAR(67)”结果为C,与试想情况完全一致。现在生成A~Z的问题,就变成了生成数字65~92的问题了。
那么如何能够逐渐递增序数呢?可以用ROW函数和COLUMN函数!
以ROW为例,使用公式“=ROW(65:65)”,然后将其向下复制。
再生成A~Z就可以了,C17单元格的公式为“=CHAR(ROW(65:65))”,如图8-9所示。
图8-9 生成A~Z序列
这样就生成了纵向的序列。如果问题是在横向上哪一列表示第65列,你能迅速地说出是“BM”列吗?
为了通用一般会把生成纵向A~Z序列的公式改成“=CHAR(64+ROW(1:1))”。生成横向的A~Z序列的公式改成“=CHAR(64+COLUMN(A:A))”。
大写的生成都完成了,现在该小写字母了,其实两者的操作可以说完全一样,把64换成96即可。
生成纵向小写字母a~z,公式为“=CHAR(96+ROW(1:1))”。生成横向小写字母a~z,公式为“=CHAR(96+COLUMN(A:A))”。
掌握这部分知识并不是为了炫技,生成的字母可以结合INDIRECT函数形成对单元格的间接引用。
4.生成随机字母
这一部分在随机生成的样本中可以适当使用。
26个大写字母随机的公式为“=CHAR(64+RANDBETWEEN(1,26))”。
26个小写字母随机的公式为“=CHAR(96+RANDBETWEEN(1,26))”。
其中的RANDBETWEEN是一个随机函数,数字1和26表示随机生成1~26之间的任意整数,包含1和26。
不分大小写随机字母的公式为:
这里用了一个RAND函数随机生成[0,1)之间的实数,用生成的随机实数与0.5进行比较,以决定得到数字64还是96,即生成大写字母还是小写字母。
Excel中有一些函数能用,但是在Excel中查询不到。
1.基础语法
NUMBERSTRING函数是Excel的隐藏函数,在帮助信息中查询不到,并且输入该函数的前几个字母也不会出现函数提示,但不影响使用。它的功能是将数字转化为中文,基础语法如下:
其中,参数type为数字1、2、3。
2.案例:将阿拉伯数字转化为中文
NUMBERSTRING函数第二个参数1、2、3对应的不同结果如下。
数字1,对应中文小写汉字读法。
数字2,对应中文大写汉字读法。
数字3,直接将数字一一对应转化成中文小写。
C9单元格为数字“1234567890”,D9单元格的公式为:
返回的结果为一十二亿三千四百五十六万七千八百九十。
D10、D11单元格的公式基本一致,只是将第二个参数换成2、3,结果如图8-10所示。
图8-10 NUMBERSTRING函数
这里要注意一点,这个转化并不完全符合银行对于数字中文大写的规则,需要作一定的调整。公式如下:
这个公式不用背下来,用的时候,可以上网查找。正所谓“前人栽树,后人乘凉”。