如图1,要对A列应用名称为同一款游戏名称的付费金额求和,比如,A2:A5都是王者荣耀,要对B2:B5求和。
也许你会说这还不简单吗,直接用sum(B2:B5)不就行了,可是每种应用名称对应的行数不一样,要生成的报表如图2。
解决步骤如下:
Step1:
要生成图2报表,首先得把A列应用名称的简称提取出来。
A列内容的特点是前面是文字,中间是数字,只需提取数字前面的文字,因此考虑left或leftb函数提取,C2公式
=LEFTB(A2,SEARCHB("?",A2)-1)
公式意思是先找出A2中单字节的数字所在的字节数,字节数减去1就是数字前面的汉字字节数,再用leftb取左边的汉字。
一个汉字代表2个字节,半角状态下的一个数字代表1个字节。Searchb是在一个字符串中查找特定字符位置的函数,而且可以区分单双字节,它和Find的区别是可以使用通配符。公式中的?就是表示 任意一个单字节的字符,属通配符,不是真的查找问号。
Step2:
接下来给C列加个字段名称“应用名称简称”就可以用数据透视表得到图2结果,
如果用公式,需要对C列提取不重复内容,可以用数据→删除重复项来完成。
Step3:
D列是A列的简称,借助通配符*用SUMIF函数求和。
E2公式=SUMIF(A:A,"*"&D2&"*",B:B)
&是连接符,D2前后连接*,表示D2前后有任意个字符,如果A列内容和D列前后带任意个字符的内容相符就求和。
一个问题的解决,用到了leftb, searchb,sumif等多个函数,还有通配符*和?,删除重复项、数据透视表等多个技巧,所以说,混职场还是要有点综合实力哦。