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

学习Excel技术,关注微信公众号:

excelperfect

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

f8bf8705c028d50ca2989b9e69b7c4f1.png

图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所示。

5a8925fca62684b26359e97d3eba737c.png

图2

004d9a4b7c6eb76defec3ca3c307c7bd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值