用函數如何判斷單元格中的字符串是否全是字母字符

今天講的這個課題對於函數有些難度,但仍是遵循我的思想,寫函數就是在寫程序,其實今天的這個函數難度要高於一般的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 是否看懂了上面的公式。

分享成果,隨喜正能量


分享到:


相關文章: