怎么计算品名数量最大值对应的编码?两种方法分享



Lv.3 优质创作者
有网友咨询了这样一个问题:在表格中,每个品名有多个数量,多个编码,怎么计算每个品名中数量最大值对应的编码?
这个问题挺有意思的。说实话,第一次看到的时候我也愣了一下,但拆解开来其实并不难。
先看看数据长什么样:
分析一下,要找到这个编码,需要满足两个条件:
品名等于指定的产品(比如A产品)
数量等于该产品的最大值
想清楚了条件,接下来就是选函数的事了。我分享两种方法。
方法一:FILTER + MAX 函数组合
这个方法的思路是:先用 FILTER 把指定品名的编码筛出来,同时用 MAX 找到该品名的最大数量,再在外层用 FILTER 筛选出数量等于最大值的那个编码。
公式如下(以E2单元格中的品名为查找值):
=FILTER(FILTER(C:C,A:A=E2),FILTER(B:B,A:A=E2)=MAX(FILTER(B:B,A:A=E2)))
看起来有点长?别急,拆开看就清楚了:
FILTER(C:C, A:A=E2) → 第一步:从C列(编码)中筛出品名等于E2的所有编码
FILTER(B:B, A:A=E2) → 第二步:从B列(数量)中筛出品名等于E2的所有数量
MAX(FILTER(B:B, A:A=E2)) → 第三步:找出这些数量中的最大值
FILTER(B:B, A:A=E2) = MAX(...) → 第四步:判断每个数量是否等于最大值,生成TRUE/FALSE数组
外层 FILTER(第一步的结果, 第四步的条件) → 第五步:从筛出的编码中,再筛选出条件为TRUE的,就是最终结果
操作步骤:
在F2单元格输入公式:=FILTER(FILTER(C:C,A:A=E2),FILTER(B:B,A:A=E2)=MAX(FILTER(B:B,A:A=E2)))
按回车,结果就出来了。比如E2是"A产品",公式会自动找出A产品中数量最大的那行对应的编码。
下拉填充,B产品、C产品的结果也自动算出来了。
方法二:SORT + TAKE 函数组合
方法一的公式有点长,有没有简单一点的方法?
有!换一个思路:先把指定品名的"数量+编码"一起筛出来,然后按数量降序排序,排好之后取第一行——第一行就是数量最大的那行,取出编码列就行了。
公式如下:
=TAKE(SORT(FILTER(B:C,A:A=E2),1,-1),1,-1)
拆开看:
FILTER(B:C, A:A=E2) → 第一步:把B列和C列(数量+编码)一起筛出来,品名等于E2
SORT(..., 1, -1) → 第二步:按第1列(数量)排序,-1表示降序,最大的排在最前面
TAKE(..., 1, -1) → 第三步:取第1行(数量最大的那行),取最后1列(编码列)
操作步骤:
在F2单元格输入公式:=TAKE(SORT(FILTER(B:C,A:A=E2),1,-1),1,-1)
按回车,下拉填充,搞定。
两种方法对比
涉及的函数小结
这次用到了四个函数,简单回顾一下:
这四个都是WPS表格的新函数,需要较新版本的WPS才能使用。如果版本较旧,可以考虑用 INDEX + MATCH 的组合替代,不过公式会更复杂一些。
今天的分享就到这里。关于这个问题,您是否还有更好的解决方法?欢迎留言分享!
我是墨云轩,热衷分享办公小技巧,边学习,边分享,每天进步一点点!感谢您的阅读!
Lv.1 新人创作者
Lv.3 优质创作者
Lv.1 新人创作者
Lv.3 优质创作者