一个学生问了这样一个问题:有一个表格,记录每个人的获得证书情况,每个“初级已发证”给56元,每个“中高级已发证”给96元,请计算每个人的实际总金额。模拟数据如下。

这个问题的实质,是如何从字符串里统计指定字符出现的个数。例如,在B2单元格中,“初级已发证”有3个,那么,这个如何统计出来?
下面是一个使用的统计公式:
=(LEN(B2)-LEN(SUBSTITUTE(B2,"初级已发证","")))/LEN("初级已发证")
这个公式的基本原理是:
(1)先用SUBSTITUTE函数将指定字符串"初级已发证"替换掉,就是表达式:SUBSTITUTE(B2,"初级已发证",""),这样,就得到了没有"初级已发证"的一个新字符串,如下所示:
"2014,2015,2016,"
(2)原来的字符串是:
"2014初级已发证,2015初级已发证,2016初级已发证,"
(3)用LEN分别计算这两个字符串的长度,分别为:15和30
(4)这两个字符串长度相减是30-15=15,这个15就是被剔除出去的(也就是要统计的)字符串 "初级已发证" 的总长度。
(5)这样,将这个总长度 15 除以字符串 "初级已发证" 本身长度(就是表达式 LEN(B2) 的结果,是5),就是该字符串的个数了:
15/5=3
(6)由于要统计两种证书的总金额,可以将两种证书的出现个数分别计算出来,最后相加即可,最后的公式如下:
=56*(LEN(B2)-LEN(SUBSTITUTE(B2,"初级已发证","")))/LEN("初级已发证")+96*(LEN(B2)-LEN(SUBSTITUTE(B2,"中高级已发证","")))/LEN("中高级已发证")
----------------------------------------------------------------
Excel函数并不难,难的是如何结合具体表格来寻找解决问题的逻辑思路!



