楼主 whsfhwm |
Q:如何根据同一单号中某个指定代码来进行特殊分类统计? A:数据源为“销售明细”工作表的A:D列和“分类对应表”;需要的结果为“需求的结果”工作表中的第1到3行的样式。要求采用透视表实现统计。 最后的解决分如下三步来实现: 一、首先定义两个名称: 1. lianhe=销售明细!$A$2:$A$14&销售明细!$C$2:$C$14 2. data=OFFSET(销售明细!$A$1,,,COUNTA(销售明细!$A:$A),COUNTA(销售明细!$1:$1)) ●因为公式=MATCH(A5&"d",销售明细!$A$2:$A$14&销售明细!$C$2:$C$14,)不能直接使用,需要定义lianhe=…才能使用的。这样就有了根据MATCH(A2&"d",lianhe,)返回结果是否为错误值来判断同组是否存在指定代码d(或i) ●由于需求中要根据d或i出现在代码列后,其同一单号的分类都要与d对应的分类一致,所以就在A列和C列合并成的字符数组中进行查找每行的A列和d或i是否存在。 ●data——定义这个名称是用于数据透视表的动态数据源,这样数据源增加时,透视表不用重新选取数据区域就能自动更新。至于为什么这样定义,可以找找相关的帖子。或者自己看看offset函数的帮助。 二、然后使用辅助列,销售明细E2公式: 1. =IF(ISNUMBER(MATCH(A2&"d",lianhe,)),VLOOKUP("d",分类对应表!A:B,2,),IF(ISNUMBER(MATCH(A2&"i",lianhe,)),VLOOKUP("i",分类对应表!A:B,2,),VLOOKUP(C2,分类对应表!A:B,2,))) ●上述公式中,最外层的if的含义是判断同一单号中,是否存在代码d:如果是,执行为d的处理;如果不是,则执行下一级的if判断。 ●第二层的if的含义是判断同一单号中,是否存在代码i:如果是,执行为i的处理;如果不是,说明本单号里既没有代码d,也没有代码i,故取该行代码对应的分类。 ●有了上述几步,联合起来就是E列的公式了 三、最后用透视表得到需要的最终结果 例子1.rar |
2楼 开心E点 |
i学习一下,感谢分享 |