前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >问与答81: 如何求一组数据中满足多个条件的最大值?

问与答81: 如何求一组数据中满足多个条件的最大值?

作者头像
fanjy
发布2020-04-20 13:32:27
发布2020-04-20 13:32:27
4K0
举报
文章被收录于专栏:完美Excel完美Excel

Q:在工作表中有一些数据,如下图1所示,我想要获取“参数3”等于“A”、”参数4“等于”C1“对应的”参数5”中的最大值,能够使用公式解决吗?

图1

A:这种情况用公式很容易解决。

首先,我们将单元格区域B2:B12命名为“参数1”,C2:C12命名为“参数2”,D2:D12命名为“参数3”,E2:E12命名为“参数4”,F2:F12命名为“参数5”。

在单元格F13中输入数组公式:

=MAX(IF((参数3=D13)*(参数4=E13),参数5,0))

记得按Ctrl+Shift+Enter组合键完成输入。

我们看看公式中的:

(参数3=D13)*(参数4=E13)

将D2:D12中的值与D13中的值比较:

{"A";"B";"A";"B";"A";"A";"B";"A";"B";"A";"A"}=”A”

得到:

{TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE}

将E2:E12中的值与E13中的值比较:

{"C1";"C2";"C1";"C1";"C1";"C2";"C2";"C1";"C2";"C2";"C1"}=”C1”

得到:

{TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE}

将上面生成的两个中间数组相乘:

{TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE}*{TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE}

得到数组:

{1;0;1;0;1;0;0;1;0;0;1}

其中的1代表同一行的列D和列E中包含“A”和“C1”。

将上面的数组代入IF语句:

=MAX(IF({1;0;1;0;1;0;0;1;0;0;1},参数5,0))

转换为:

=MAX(IF({1;0;1;0;1;0;0;1;0;0;1},{0.08;2.389;0.198;0.128;0.019;0.491;0.168;0.545;1.45;0.034;0.246},0))

转换为:

=MAX({0.08;0;0.198;0;0.019;0;0;0.545;0;0;0.246})

即由同一行的列D和列E中包含“A”和“C1”对应的列F中的值和0组成的数组,取其最大值就是想要的结果:

0.545

本例可以扩展到更多的条件。例如,在上述条件基础上,要求“参数1”为“M-I”、”参数2”为 M-IA”,可以使用数组公式:

=MAX(IF((参数1=B13)*(参数2=C13)*(参数3=D13)*(参数4=E13),参数5,0))

可以看到,返回值为0.198,如下图2所示。

图2

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档