用函数如何判断单元格中的字符串是否全是字母字符

今天讲的这个课题对于函数有些难度,但仍是遵循我的思想,写函数就是在写程序,其实今天的这个函数难度要高于一般的VBA,对于VBA初学者,甚至是可以达到中级水平(可以用VBA操作数据库)的人员来说不一定能读懂,如有谁可以一次能读懂,我将加入VBA人才库,哈哈。

言归正传,今天讲如果用组合函数判断一个单元格输入的是否全部是字母。先看下面的截图

用函数如何判断单元格中的字符串是否全是字母字符

在A列中,有一系列的字符或组合,要判断哪些全部是字母,我们录入了B列的公式,返回的结果是C列的值。

这里我公布了B列的公式,但截图的图表中有一点没有完全显示出来,截图的光标选中的B2的单元格,我们看上面的编辑栏,会发现公式的首位是加了一个{}的符号,这就说明,这个公式是数组公式。

下面是B2公式的复制:

={AND(N(CODE(RIGHT(UPPER(A2),ROW(INDIRECT("1:"&LEN(A2)))))>{64,90})={1,0})}

好了,到这里我们称之为第一步,有谁在第一步能看懂了这个公式?请举手。不过没关系我们下面会先简单的讲解一下这个公式。

第二步,公式的简要说明。这个例子的公式是一个数组公式,涉及到的函数和公式应用较多,简单介绍下公式的原理:首先把字符串中所有字符都用Upper函数转为大写字母(有利于判断),然后用right函数将整个字符串依次分段,再用code函数将分段后的首字符代码取出(分段后的首字符就是字符串中的每一个字符),最后判断代码是否在65~90的区间内(大写英文字母的区间)。这个例子让大家了解到,code函数经过与其他函数的组合可以突破返回首字符代码的限制,可以有更广泛的应用。

到第二步这里有谁能完全读懂上面的公式了?请举手。

如果你到这里可以轻松的完全的读懂上面的公式,那么你的函数水平可以在中级以上了,写的VBA程序基本可以操作数据库了。但相信很多人还是一团雾水,或者似是而非地看懂了。

下面看我的第三部讲解:

={AND(N(CODE(RIGHT(UPPER(A2),ROW(INDIRECT("1:"&LEN(A2)))))>{64,90})={1,0})}

其实这个组合函数和程序的写法一样的,甚至还更难。

1 首先要计算的是UPPER(A2)=123QWE,当然我这里没有给出小写的例子。

2求LEN(A2)=6,得到下一阶的公式:INDIRECT("1:"&6) 进而化简这个值为INDIRECT("1:6")。

3 有了上面的值进而得到下阶的公式:ROW($1:$6),所以会得到下一阶公式RIGHT("123QWE",{ 1;2;3;4;5;6})。

4 从上面公式得到,下阶的公式:CODE({"E"; "WE"; "QWE"; "3QWE"; "23QWE"; "123QWE"}),值为{69;87;81;51;50;49}

5 上面的值进而会转化为下阶的公式{69;87;81;51;50;49}>{64,90}。这是对于数组的比较,而得到公式的返回值:{TURE,FALSE; TURE,FALSE; TURE,FALSE; FALSE,FALSE; FALSE,FALSE; FALSE,FALSE}

6 从上阶的值得到下阶的公式

N({TURE,FALSE; TURE,FALSE; TURE,FALSE; FALSE,FALSE; FALSE,FALSE; FALSE,FALSE})。进而达到值{1,0;1,0;1,0;0,0;0,0;0,0}

7 从上阶的值得到下阶的公式{1,0;1,0;1,0;0,0;0,0;0,0}={1,0},进而得到公式的返回值{TURE,TURE; TURE,TURE; TURE,TURE;FALSE,TURE;FALSE,TURE ;FALSE,TURE }

8 从上阶的值得到下阶的公式

AND({TURE,TURE;TURE,TURE; TURE,TURE;FALSE,TURE;FALSE,TURE ;FALSE,TURE },而得到公式的返回值FALSE)。

经过了上面的8个关键步骤的计算,我们得到了FALSE的结果,到这里,应该大多数的朋友都能看懂上面的公式了。如果还没有看懂,赶快再复习一下数组的运算,N函数的用法,及基本的RIGHT函数的用法了。

今日内容回向:

1 如何判断单元格中的字符串是否全是字母字符的思路是如何建立的。

2 CODE函数和CHAR函数的利用是否能熟练了?

3 是否看懂了上面的公式。

分享成果,随喜正能量


分享到:


相關文章: