今日繼續講函數,很多做統計工作的朋友都會遇到一項即煩人又半點馬虎不得的事情,那就是"數人數",或者類似的問題。就是在一個單元格中有若干多個人名要數出它們的個數,又絕對不可以出錯。
很多人數了一遍又一遍,但最後還是出錯了。因為涉及到年終的考核,或者獎金的分配,結果就是被老闆臭罵一頓。辛苦工作半天,這委屈跟誰說呢?
怎麼辦呢?問題總要解決,如果你在無意中看到我的這篇文章,你肯定會得到解脫,這篇文章就是講如何能快速地數出人名個數,而且不會出錯!不會出錯!不會出錯!
看下面的實例,是某地產公司人員的銷售業績考核表,共分A,B,C,D四類,每類都有不用的人名,當然我這裡只是列舉了幾個,實際的應用中可能會很多很多,老闆要你在C列把人名數填上。
因為老闆要根據你統計出來的總人數及各類的人員總數來分派年終獎金,所以,你不能出錯。如果只是上表中的幾個數據是很好辦的,但如果是幾百上千的數據那就頭疼了。或許你用了大半天的時間數啊數,結果卻是連自己心裡都沒把握。還是看強大的函數功能吧,這裡引入SUBSTITUTE函數。
什麼是SUBSTITUTE函數呢?就是在文本字符串中用new_text 替代old_text的函數。
語法:SUBSTITUTE(text,old_text,new_text,[instance_num])
Text 為需要替換其中字符的文本,或對含有文本的單元格的引用。
Old_text 為需要替換的舊文本。
New_text 用於替換 old_text 的文本。
Instance_num 為一數值,用來指定以new_text 替換第幾次出現的 old_text。如果指定了 instance_num,則只有滿足要求的 old_text 被替換;如果缺省則將用 new_text 替換 TEXT 中出現的所有 old_text。
本文的例子中需要在C3的單元格中輸入一個公式,返回B3單元格的人名數,什麼公式呢?就是
=LEN(B3)-LEN(SUBSTITUTE(B3,",",""))+1
公式講解:
SUBSTITUTE(B3,",",""),就是將B3單元格中出現的","替換為空,
LEN(B3)-LEN(SUBSTITUTE(B3,",",""))+1,就是B3單元格總的長度減去將B3單元格中出現的","替換為空後的長度再加1,是什麼意思呢?說的直觀一點就是B3單元格中出現的","的次數再加1,這個數值就是人名數。看下面的公式截圖:
那麼為什麼會有這樣的推論呢?我們回過頭再仔細的研究一下B3單元格中人名書寫方式,發現是用逗號分隔的,有一定的規律,那麼就是逗號的個數再加1就可以等於人名數了。原來如此!
所以這個公式的特點就是巧妙的利用了分隔符號的個數與人數之間的關係特點,巧妙的利用公司,節約了時間,提高了準確率。
我們看下面的輸出結果:
非常的正確。
引申討論:如果B3單元格人名的間隔不全是逗號該怎麼處理呢?好辦,只要再嵌套一層SUBSTITUTE函數就可以了。如人名之間還有用"."分隔的,那麼公式就可以書寫成:
=LEN(B3)-LEN(SUBSTITUTE(SUBSTITUTE(B3,",",""),".",""))+1,其他的特例也可以依照此來處理的。
今日技巧總結:
SUBSTITUTE函數就是在文本字符串中用 new_text 替代 old_text的函數,可以嵌套;當數人名個數或其他類似問題時可以分析數據源,最後用長度差的方式來獲得。
閱讀更多 VBA專家 的文章