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

我從事管理工作多年,這一系列文章是根據多年的經驗編寫的,也是一直在利用的工具,非常方便好用。現在分享出來,希望能對同樣在職場打拚的朋友有些許的幫助。

我的公眾號「VBA與GOLANG語言學習」或「NZ_9668」和「VBA學習交流社羣」裏有更多的內容分享。對數據分析有需要的公司、組織或個人可以直接加入聯繫我,為你提供專業的技術支持。朋友們有問題請隨時提出來,我們一起探討學習。目的就是玩轉Excel、VBA,提高工作效率,能有更多的時間和精力享受生活。

分享成果,隨喜正能量


推薦閱讀:
相關文章