Excel实战:逆向还原统计数据
本篇适合:有一定公式基础,主要思路分享。
QQ交流群:644328490。
需求:将统计类报表数据,逆向还原为一维数据......
常规操作,是统计分析,即由图-1右边→左边。本例讲解非人类逆向操作,由左边报表,利用公式拉出右边明细。(逆向思维更考验公式思路)
01思路解析
初想,应用VBA代码,容易实现。但一般人(包括我)不会VBA,就想试试纯公式。
实际理清思路后,公式也简单:sum、row、countif,再加上index函数,都很常见,可搞定。
如图-1中“王某”买4个苹果,还原为明细是4条。想想一下操作场景:公式一直下拉到第4个单元格,这之前都是“王某”,而从第5条开始,变成“李某”,再从第7条变“陈某”......
OK,根据这个场景,首先计算机需要知道,公式所在单元格,是第几个单元格,自然想到row函数。
然后确定从第几条开始变。例如从第5,这个数字是比王某买的苹果数大一点;又如从第7,它比王某+李某买的苹果数之和,又大一点。这个简单,求和函数用sum。还要比较大小,也可用sum,但countif更简洁明了。
最后用index函数,返回结果即OK,如图-2:
02步骤详解
如图-3,首先添加辅助D列求和,D1=0,D2单元格公式:=SUM($B$2:B2),向下填充。
☆注意:此处引用区域前半绝对引用,后半相对引用,构建“增域求和”,即公式下拉时求和区域逐渐增大。
E列辅助列是复制C列,以便index返回结果,不用也可。
F列为row函数,如图-4,F2处公式:
=ROW(C1),向下填充。
辅助G列为countif函数,G2处公式:
=COUNTIF($D$1:$D$5,"<"&F2),向下填充。
☆注:这里是将row函数结果与sum函数结果比大小,是index函数返回结果的依据。
H列index函数返回结果,H2处公式:
=INDEX($E$2:$E$5,G2),向下填充。
最终合并公式如下:
=INDEX($C$2:$C$5,COUNTIF($D$1:$D$5,"<"&ROW(C1))),向下填充。
03总结
表格公式问题,可加qq群644328490,或关注微信公众号“闲钓宇哥”。