利用加权思想求各产品销量最高的月份
看完动图后,相信你已经理解题意了,那该如何解题呢?很多小伙伴想到的方法可能是这样的:
先根据产品查询出它在1~6月的销量,然后在1~6月的销量中取出最大值,再根据最高销量在1~6月销量中的位置,返回对应的月份。
公式如下,优点是它不是数组公式,缺点是公式较长。
=INDEX(B2:G2,MATCH(MAX(OFFSET(B2:G2,MATCH(J2,A3:A10,),)),OFFSET(B2:G2,MATCH(J2,A3:A10,),),))
1.一维数组的加权
=INDEX(2:2,RIGHT(MAX(OFFSET(B2:G2,MATCH(J2,A3:A10,),)/1%+COLUMN(B:G)),2))
MATCH(J2,A3:A10,)这部分用match查找J2单元格的产品在A3:A10这个区域中的位置,结果为3。
OFFSET(B2:G2,MATCH(J2,A3:A10,),)这部分用offset偏移得到了C产品在1~6月的销量,结果为{339,330,457,231,474,163}。它是以B2:G2为基点,向下偏移3行。
OFFSET(B2:G2,MATCH(J2,A3:A10,),)/1%+COLUMN(B:G)这部分是加权的思想,用offset的结果,也就是C产品1~6月的销量,乘以100,再加上对应的列号。
最后返回的结果为{33902,33003,45704,23105,47406,16307}。
加权处理后的结果有两重意义。比如33902,前面的3位数339代表销量;后面的2位数代表该销量对应的列号。
而且它的结果不影响原来结果的大小顺序。比如原来C产品1~6月的销量中,第1大是474,第2大是457;加权处理后的结果中,第1大是47406,第2大是45704。
接下来用max从加权处理后的结果中取出最大值47406,它的意思是C产品的最大销量是474,对应的列号是6。
然后用right从47406中截取右边的2位数06,得到了最高销量对应的列号,最后用index返回第2行第6列的月份。
=LOOKUP(,0/FREQUENCY(-9^9,-OFFSET(B2:G2,MATCH(J2,A3:A10,),)),B2:G2)
输入下面的公式,按ctrl+shift+enter。
=INDEX(2:2,RIGHT(MAX((B3:G10/1%+COLUMN(B:G))*(A3:A10=J2)),2))
这个公式是对二维区域B3:G10进行加权处理,得到了一个二维数组,然后用A3:A10=J2筛选出C产品加权后的数据,其他产品的数据都变为0。接下来用max取出最大值,再用right从最大值中取出对应的列号,最后用index返回第2行中对应的月份。
https://pan.baidu.com/s/1yGh6YlfkvqVhmdoKGcswPQ