提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

今天繼續和大家分享這套函數(確實不知道該用哪個量詞了,就覺得這個還算貼切點),主要是涉及文本的計數、截取、查找、替換等處理的。相信很多朋友都已經猜到了,那麼再讓這些函數來亮個相:

注意:由於內容較多,此文要分為幾個部分講解,今天講解第二部分。

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

一套16個函數


字符串長度(字符串的皮尺)

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

字符串長度函數

上圖是函數基礎知識,我們可以怎麼樣用這個函數呢?接下來我舉幾個例說明:

一、檢查數據中是否存在不可見字符

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

檢查不可見字符

注意:①最常見的不可見字符就是空格,所以此處以空格為例;但是除空格外,還有很多不可見字符,實際使用中需要注意;

②【'】單引號不會被統計,這個單引號有什麼用呢?其作用是將輸入的內容直接轉換為文本格式,無論數值、函數、公式,輸入的時候在最前面添加一個英文狀態下的單引號,內容即轉換為文本了。常用於:錄入身份證號碼、錄入以0開始的數據、將單元內的公式展示出來等;

③強制換行符【Alt+Enter】佔一個字節,如上面例子中,先強制換行,顯示時再取消自動換行,顯示的結果和未換行一樣,但是用LEN函數計算的結果卻不一樣,這一點很容易迷惑人。另外,用強制換符實現的換行和用系統自動換行實現的換行,其結果是不一樣的(結果見下圖)。

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

強制換行和自動換行的效果及結果

④對不可見字符的處理,有以下幾個函數:TRIM、SUBSTITUTE、CLEAN。TRIM函數可以清除字符串開始和末尾的空格,對中間的空無效;SUBSTITUTE函數可以清除所有的空格,包括前後和中間的;CLEAN函數可以清除字符串中不能打印的字符,比如換行符等,但是對空格無效。

二、檢查數據是否正確

可用於檢查固定長度的字符串,比如我們的身份證號碼,都是18位的,所以我們可以用LEN(身份證號)是否等於18,來判斷身份證號碼是否正確(見下圖)。

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

判斷身份證號碼是否正確

三、計算字符串中漢字、數字(或字母)的個數

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

計算漢字和數字的字數

<code>計算漢字字數的公式:=LENB(A2)-LEN(A2)/<code>

公式理解:LENB("今日頭條")-LEN("今日頭條")=8-4=4

LENB("2020")- LEN("2020")=4-4=0

<code>計算數字字數的公式:=2*LEN(A2)-LENB(A2)/<code>

公式理解:2*LEN("今日頭條")-LENB("今日頭條")=8-8=0

2*LEN("2020")- LENB("2020")=8-4=4

四、來一個開腦洞的用法:根據月份計算這個月份所在的季度

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

判斷月份所在的季度

通過計算2^(1~12)的結果,然後用LEN函數判斷計算結果的數字字符數,來計算季度(這是一個取巧的方法,也是一個開腦洞的方法,大家可以看看是否還有其他用法。


字符串截取(字符串的剪刀)

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

字符串截取函數

上圖是這6個函數基礎知識,有幾個地方需要 注意:

1、LEFTB函數對漢字取5個字節時,得到的結果是2個字(4個字節),說明這個函數遇到漢字時,函數不能提取半個漢字,因此會向下取整。MIDB、RIGHTB函數原理一樣;

2、MID函數第二參數為1時,其效果和LEFT函數一樣,且MID函數由於多一個參數,實際使用中會更加靈活,所以應用更廣泛;

3、LEFT、LEFTB、RIGHT、RIGHTB函數可以省略第二參數,在省略第二參數時,默認取一個字符(字節);

4、函數的【截取長度】參數必須為大於等於0的數字(如果是小數,會向下取整);如果【截取長度】的值大於了字符串本身的字符(字節數),則會返回全部的字符串;

5、使用MIDB、LEFTB、RIGHTB函數時,函數截長度值也應該用字節長度;MIDB的第二參數的起始位置也應該用字節計數;

6、這6個函數都是文本函數,對數值進行截取後,得到的數值是文本格式的數值。

我們可以怎麼樣用這個函數呢?接下來我舉幾個例說明:

一、提取漢字、字母

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

提取漢字和字母

如圖所示,首先用LEN和LENB函數的組合,計算出漢字和字母的字數,然後分別用函數提取相應字符數的內容即可。用這種方式提取,要提取的內容必須連在一起,比如文字字母是分開的,不是交叉存在的。

二、從身份號碼中提取信息

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

從身份號碼中提取信息

提醒:你收到一套函數。這套函數全吃透,文本處理不發愁。進階一

身份號碼信息組成

從上圖中,我們可以分解出身份號碼各個含義,通過這個信息,我們就可以根據我們的需要,從身份號碼中提取我們所需要的信息。比如(身份號碼所在的單元格為C46):

<code>提取生日的公式:=TEXT(MID(C46,7,8),"#-00-00")*1/<code>
<code>提取性別的公式:=IF(MOD(MID(C46,17,1),2),"男","女")/<code>
<code>提取生肖的公式:=MID("鼠牛虎兔龍蛇馬羊猴雞狗豬",MOD(YEAR(C48)-4,12)+1,1)/<code>

所有鼠年年份除以12均餘4。所以用年份減4再除以12,鼠年都會餘0,然後在餘數加1,得到1並後作為MID第2參數,從屬相順序中的第1位開始,提取1個字符;牛年就會是從第2位開始提取1個字符。

<code>提取農曆年份的天干:=MID("甲乙丙丁戊己庚辛壬癸",MOD(YEAR(C48)-4,10)+1,1)/<code>
<code>提取農曆年份的地支:=MID("子醜寅卯辰巳午未申酉戌亥",MOD(YEAR(C48)-4,12)+1,1)/<code>

所有甲子年年份除以12或10,均餘4。所以用年份減4再除以,12或10,,甲子年都會餘0,然後在餘數加1,得到1後作為MID第2參數,從干支順序中的第1位開始,提取1個字符;乙丑年就會是從第2位開始提取1個字符。

既然說到農曆,那就順便普及下在2007及更高版本的excel中,我們是如何來計算農曆日期的:

Excel中,公曆轉農曆的代碼是:[$-130000],即:=TEXT(公曆日期,”[$-130000]md")【m表示月,d表示日】

<code>農曆月份:=TEXT(C48,"[$-130000][DBNum1]m月")/<code>
<code>農曆日期:=TEXT(C48,LOOKUP(--TEXT(C48,"[$-130000]d"),{1,11},{"初",""})&"[$-130000][DBNum1]d")/<code>

農曆日期,用=TEXT(C48,"[$-130000][DBNum1]d日"),但是農曆的寫法是日期小於等於10的,前面要加【初】,所以用LOOKUP函數判斷計算的農曆日,在根據結果確認是否在前面加【初】字。

重點注意:用微軟提供的公曆、農曆轉換代碼,無法識別農曆的閏月,使用的時候請小心,所以我後面會提供一個VBA做的自定義函數,請持續關注。


不知不覺又已經2500多字了。今天的內容就分享到這裡,看完後,希望大家能有所收穫。不可見字符的處理是否還有印象?字符串截取函數的注意事項是否還記得?身份號碼提取信息、公曆轉農曆的計算方式,是否好玩呢?是否還繼續期待後續的更新呢?我們明天(3月4號)繼續更新。歡迎大家持續關注。

如果你喜歡我分享的內容,請點個贊支持下;

如果你覺得我分享的內容對你有幫助,可以關注我;

如果要看我以前分享過的好玩的內容,大家可以去我的主頁查看歷史文章。


分享到:


相關文章: