人工统计某工厂近几年不同物料对应的数量和退货金额,数据量比较大,有上千行,现在领导要求看不同的商家,按排名指定的前n个项目。
如上图中的退货数据所示,您需要查看每个商家的前三名退货金额对应的材料**是什么?在不通过公式的情况下,您只能通过按金额降序排序来手动筛选一个**商家,以找到该**商家**的前三个材料。
因为**商家太多,不太可能被一一筛选、复制粘贴,领导有时候想看前三名,也可能想看前几名,需求是动态的。 所以我想用公式来实现上述功能。
知识点一:动态展示前n项的设计技巧。
知识点二:过滤功能、排序功能、去重功能、保留功能的组合应用。
知识点三:文字合并符号“&”和符号,合并多列数据;
知识点四:自定义文字技巧;
您需要动态显示前 n 个项目,您需要创建一个新单元格,输入数字 3,这里为了显示效果,将数字 3 设置为自定义格式:”"以前"#"项目"“,使单元格中的内容显示为带有中文提示的数据;
在过滤商之前,先删除源数据中的商,即a列,并输入函数:=drop(unique(a2:a10000),-1);获取唯一商的数据。 为了方便大家了解,这里是第一**业务的效果,第一业务的效果还可以,可以把公式填下来;
前n个项目标题:input function: =sequence(,g2),并设置为自定义格式:”"部分" # "名字"这样,单元格的显示效果是第1、第2、第3位。
二维数据需要显示退货总量降序排列,即退货最多的**商家排名第一,排名第一的**商家需要查看前3名退货对应的物料代码和数量。 首先提出第一个要求,然后输入公式:
*商:choosecols(sort(hstack(drop(unique(a2:a10000),-1),sumifs(e:e,a:a,drop(unique(a2:a10000),-1))))2,-1),1).
金额:choosecols(sort(hstack(drop(unique(a2:a10000),-1),sumifs(e:e,a:a,drop(unique(a2:a10000),-1))))2,-1),2).
效果如下:
*连锁退货总量排名后,单个商家显示前三名,先进入第一个商家,录入功能:
对应项目**:
torow(choosecols(take(sort(filter(c2:e3000,a2:a3000=i2),3,-1),g2),1))
对应项目金额:
torow(choosecols(take(sort(filter(c2:e3000,a2:a3000=i2),3,-1),g2),3))
效果如下:
在上图中,您还需要将两列合并为一个单元格并自动换行,然后输入公式:
let(a,take(sort(filter($c$2:$e$3000,$a$2:$a$3000=i2),3,-1),$g$2),torow(choosecols(a,1))&char(10)&torow(choosecols(a,3)))
并向下填写公式,可以得到下图:
同时,测试前 5 个返回金额,将总返回金额的数字更改为 5 个 效果如下:
上面的前n项还是需要用公式填的,所以不是“完美”,把上面的公式变成一个动态数组:
ifna(drop(reduce("",i2#,lambda(x,y,vstack(x,let(a,take(sort(filter(c2:e3000,a2:a3000=y),3,-1),g2),torow(choosecols(a,1))&char(10)&torow(choosecols(a,3)))1),"")
这会产生动态显示。 效果如下:
源文件:234动态显示不同商家退货金额前n名。 xlsx
我是顾哥:
从事制造业20年,在企业运营、连锁管理、智能制造系统等方面具有丰富的实践经验。 擅长企业智能化和灵活的计划运营管理,善于通过企业流程优化和标准化、企业管理、计划运营的引入来提升企业效率在提高企业准时交货率、降低企业库存、输出智能制造人才等方面拥有丰富的经验。 学习习 PMC生产计划,关注古格计划!