我們學(xué)習(xí)Excel函數(shù) 涧卵,重在理清函數(shù)使用的思路而不是函數(shù)本身的各種高級用法勤家。只要解決問題的思路理清了,函數(shù)才會發(fā)揮它無窮的魅力柳恐,任意一個函數(shù)都能讓你解決非常多的問題伐脖。函數(shù)的掌握在精而不在多,就是這個道理乐设。我今天分享的這個函數(shù):Mid讼庇。算是基礎(chǔ)的文本函數(shù),但只要學(xué)精了近尚,思路開闊了蠕啄,照樣能解決非常不同尋常的問題。
一戈锻、Mid函數(shù)是什么玩意兒歼跟?
Mid函數(shù)是Excel最常用的3個基礎(chǔ)字符串提取函數(shù)之一,其他兩個為left和right格遭。相比其他兩個函數(shù)哈街,此函數(shù)的經(jīng)典案例更多,使用起來也更加靈活拒迅,在工作中的使用也更為廣泛骚秦。Mid函數(shù)主要用于提取文本字符串中的任意字符,它主要有3個參數(shù):text(待提取的文本字符串),start_num(起始位置),num_chars(要提取多少個字符)璧微。
例如我們在B4中輸入公式:=mid(A4,2,3),得到的將是A4單元格中字符串的后三個字:看今朝作箍。
二、Mid函數(shù)最常見的一個經(jīng)典應(yīng)用案例
我們?nèi)肆Y源部的朋友經(jīng)常都需要從身份證號中提取出人員的出生日期以及性別等信息前硫,如下圖所示:
關(guān)于身份證:身份證的第7位到第14位(15位身份證號為12位)是一個人的出生日期信息,第17位(15位身份證為15位)為一個人的性別信息(奇數(shù)為男开瞭,偶數(shù)為女)懒震。要得到一個人的出生日期和性別信息,我們只需要分別從身份證號中提取這些信息然后進(jìn)行一定處理就可以完成了嗤详。
1.通過身份證判斷一個人的性別
思路:(1)首先利用mid函數(shù)提取性別識別碼个扰,18位身份證號使用公式:=mid(B2,17,1);15位身份證號使用公式:=mid(B2,15,1)。我們希望不管身份證號碼是15位還是18位葱色,都能用一條公式搞定递宅,怎么做呢?我們通過判斷提取到的識別碼是奇數(shù)還是偶數(shù)來判斷是男還是女的?而決定一個數(shù)字是奇數(shù)還是偶數(shù)取決于其個位是奇數(shù)還是偶數(shù)办龄,也就是個位是奇數(shù)烘绽,那么這個數(shù)字就是奇數(shù),如果個位是偶數(shù)俐填,那么這個數(shù)字就是偶數(shù)安接。這樣說來我們完全可以輸入這樣一條公式:
=mid(b2,15,3)
如果身份證號碼是15位,提取到的數(shù)字就身份證最末尾的一個數(shù)字英融;如果身份證號碼是18位盏檐,提取到的數(shù)字則是身份證號碼第15位到17位,17位數(shù)字決定提取到的數(shù)字是奇數(shù)還是偶數(shù)驶悟。因此得到上述的公式胡野;
(2)判斷上一步提取到的數(shù)字是奇數(shù)還是偶數(shù)
這一步非常簡單,我們只需要對上一步提取到的數(shù)字判斷一下奇偶就可以了痕鳍。輸入以下公式:
=mod(mid(B2,15,3),2)
mod函數(shù)的結(jié)果為1硫豆,則是奇數(shù);結(jié)果為0笼呆,則是偶數(shù)熊响。(關(guān)于mod的使用,以后我會介紹抄邀,大家不懂的可以百度一下)
(3)利用if函數(shù)返回性別耘眨。
if函數(shù)主要有三個參數(shù)昼榛,表達(dá)式(如果……)境肾,條件為真時返回什么結(jié)果,條件為假時返回什么結(jié)果胆屿。具體寫法如下:
=if(表達(dá)式,成立時的結(jié)果,不成立時的結(jié)果)
回到咱們的正題奥喻,輸入公式:=if(mod(mid(B2,15,3),2)=1,"男","女")。如果=mod(mid(B2,15,3),2)返回的結(jié)果為1(表達(dá)式成立非迹,數(shù)字為奇數(shù)),則返回結(jié)果“男”,否則(表達(dá)式不成立)返回結(jié)果“女”。其中“=1”可以不寫桐猬。
最終公式:
=if(mod(mid(B2,15,3),2),"男","女")
2.通過身份證提取一個人的出生日期
思路:
(1)提取出生日期挠说,18位身份證直接輸入公式:=mid(B2,7,8);15位身份證時輸入公式:=mid(B2,7,6),一條公式解決的話,該怎么辦呢纯命?不管我們是18位還是15位西剥,都至少有6位日期,如果是18位呢亿汞,則加2位瞭空,因此我們得到如下的公式:
=mid(b2,7,6+(len(b2)=18)*2)
(2)將提取出來的“日期”轉(zhuǎn)化為真正的日期
mid函數(shù)得到的結(jié)果將會是文本字符串,而不是真正的日期,因此我們需要利用text函數(shù)將提取日期文本轉(zhuǎn)化為真正的日期咆畏。首先在mid函數(shù)前加2個負(fù)號南捂,轉(zhuǎn)換為數(shù)字:=--mid(b2,7,6+(len(b2)=18)*2),然后利用text函數(shù)改變一下格式:=text(--mid(b2,7,6+(len(b2)=18)*2,"0-00-00"),最后由于text函數(shù)返回的結(jié)果依然是文本,因此我們需要再在前面公式加2個負(fù)號得到正確的日期:
=--TEXT(--MID(B2,7,6+(LEN(B2)=18)*2),"0-00-00")
如果你得到的結(jié)果是數(shù)字旧找,那么你需要將單元格的格式設(shè)置為日期就可以了溺健。
三、靈活運(yùn)用mid函數(shù)的案例
如下圖所示钦讳,如何快速完成下面的表格呢矿瘦?
1.如何快速評定出語文成績的等級(評價標(biāo)準(zhǔn)為右側(cè)的表格)?
對于此問題愿卒,我相信很多人的第一反應(yīng)就是用if函數(shù)或者vlookup函數(shù)(不管初級還是中級用戶)缚去,那么這兩個函數(shù)是咱們的最優(yōu)選擇嗎?使用if函數(shù)琼开,公式會很長易结;而利用vlookup函數(shù),則需要構(gòu)建右側(cè)的表格柜候。if函數(shù)的公式如下:
=IF(B2<60,"差",IF(B2<80,"中",IF(B2<90,"良","優(yōu)")))
使用vlookup函數(shù)則需要構(gòu)建表格搞动,這里我就不多說了。
下面我們來看利用mid函數(shù)來做是多么的靈活:
=MID("差差差差差中中良優(yōu)優(yōu)",B2/10,1)
思路:構(gòu)建文本字符串:"差差差差差中中良優(yōu)優(yōu)",此文本字符串共計(jì)10個字符渣刷,因?yàn)槌煽兊姆秶?-100,將10分劃為一個段的則有10段鹦肿,當(dāng)分?jǐn)?shù)為1-59分?jǐn)?shù),劃段后則會落入1段到5段之間辅柴,返回值為“差”……因此我們得到如上的公式箩溃。
2.兩科成績均大于等于90分以上,我們判斷此人為優(yōu)秀碌嘀,我們?nèi)绾慰焖俚氐玫浇Y(jié)果呢涣旨?
針對這個問題,方法有很多種股冗,跟前面一樣霹陡,很多朋友又有使用if函數(shù)的沖動了。但這個問題止状,利用mid函數(shù)來解決同樣簡單烹棉,公式也不會長。那么如何利用mid函數(shù)來進(jìn)行判斷呢怯疤?
思路:
(1)確定要提取的文本字符串浆洗,文本字符串當(dāng)然是“優(yōu)秀”,要么不提取旅薄,要么就兩個字一起提取辅髓。因此mid函數(shù)第一參數(shù)為"優(yōu)秀"
(2)什么時候提取泣崩,什么不提取呢?兩科成績均大于等于90分洛口,先寫出來:B2>=90,C2>=90,我們可以使用邏輯函數(shù)and,兩個以上的條件均滿足時才會得到結(jié)果“TRUE”矫付,提取兩個字符串,否返回為“FALSE”第焰,不提取字符串买优;或者將兩個條件相乘,結(jié)果為1時挺举,提取2個字符杀赢,否則不提取。
=and(B2>=90,C2>=90)*2
=2*(B2>=90)*(C2>=90)
(3)從第一個字符開始提取湘纵,因此最終公式為:
=MID("優(yōu)秀",1,AND(B2>=90,C2>=90)*2)
最終效果圖:
關(guān)于Mid函數(shù)實(shí)戰(zhàn)應(yīng)用技巧脂崔,我就介紹到這里。