文本函数char和code的用法
接着来说文本函数,今天讲2个可以互转的函数,那就是char和code。char函数返回对应于数字代码的字符。code函数返回文本字符串中第一个字符的数字代码。
可以简单理解为:在excel中,一个数字代码对应一个字符。比如数字代码10对应的字符为换行符。我们常看到的char(10)就是用char返回数字代码10对应的字符,也就是换行符。
而code函数是返回文字字符串中第一个字符的数字代码。如code("爱你")返回的就是“爱”对应的数字代码45230。你写个char(45230)就返回“爱”。
-01-
函数说明
CHAR 函数语法如下,只有一个参数:
CHAR(number)
Number 必需。 介于 1 到 255 之间的数字,指定所需的字符。 使用的是当前计算机字符集中的字符。尽管官方说明是1到255的数字,实际上不止。而且还支持数组。
-02-
示例解释
下面是数字代码对应的字符,我截了3张图,给你参考下,你可以自己测试下。
-03-
具体应用
1.将一行转为多行多列
要将第1行的“我要学函数!”转化成下面多行多列的表格。之前我们说过单列转多行多列,用的是indirect这个函数。现在这个也是用indirect。首先要像最下面的表格一样,把单元格地址写出来。
我们发现它的字母都不一样,该怎么样用函数实现这样的单元格地址呢?这就用到char和code,我们知道每个字符都有1个数字代码,先用code查找A的数字代码发现是65。B是66,C是67,。。。这样就可以转化为下表。
这样是不是就和以前的单列转多行多列差不多了,用row和column构建这样的数字。在任意空白单元格输入公式=COLUMN(A1)+64+ROW(A1)*3-3,向右向下拖动,就构建出上面的数字。
再用char转化为对应的字符,公式为=CHAR(COLUMN(A1)+64+ROW(A1)*3-3)。如下图。
再&1,最后套个indirect结果就出来了,如下图。公式为=INDIRECT(CHAR(COLUMN(A1)+64+ROW(A1)*3-3)&1)。
如果你对这个不熟悉,请看之前的indirect的那篇文章。用惯了之后你就会喜欢的indirect函数
2.计算一个单元格中不重复字符的个数。
A列中是一些字符串,如果有的字符重复出现,只算做1个。比如第一个abcd出现2次,最后只算做4个字符。
现在我给出2种解法,第一种公式比较长,在B13单元格中输入公式=SUM(N(FIND(MID(A13,ROW(INDIRECT("1:"&LEN(A13))),1),A13)=ROW(INDIRECT("1:"&LEN(A13))))),按ctrl+shift+enter三键,向下拖动。这个公式我就不讲解了。
第2种用char函数,公式也短。在C13单元格中输入公式=COUNT(FIND(CHAR(ROW(A:A)),A13)),同样按ctrl+shift+enter三键,向下拖动。
ROW(A:A)是A列中所有的行号,CHAR(ROW(A:A))是将A列中所有的行号返回对应的字符,这些字符都是唯一的,也就是不会重复出现的,并且包括所有的字符。
FIND(CHAR(ROW(A:A)),A13)是在A13单元格中找上面的那些字符,找到的返回1个数字,找不到的返回错误值。COUNT(FIND(CHAR(ROW(A:A)),A13))是统计数字的个数,数字的个数就是要算的不重复的个数。
关于code的用法我这里就不再讲了,会用char就会用code。好了,今天的2个函数就讲到这里,你学会了吗?