在多个条件的范围内获取最小值

时间:2018-11-21 12:56:04

标签: excel datetime filter excel-formula spreadsheet

我有一张Excel工作表

A.                         B.                        C.   
X.                         I.                 10/10/2018 06:27:54    
X.                         I.                 12/10/2018 13:00:00
X.                         U.                 12/10/2018 13:01:20
Y.                         I.                 13/10/2018 13:05:40
Y.                         U                  15/10/2018 07:22:23
Y.                         U.                 17/10/2018 08:20:43

A列是客户,B列是活动,C列是开始时间。如何获得客户X的最大价值(C列)活动

3 个答案:

答案 0 :(得分:0)

我将使用数组公式(ctrl + shift + enter)进行此操作:
=MAX((--(A1:A6="X."))*(--(B1:B6="I."))*(C1:C6))

说明:

  • (A1:A6="X.")产生一个具有TRUE/FALSE值且满足条件的数组;
  • --将其转换为1/0
  • 第一个*(数组乘法)给出了两个条件都满足的1/0数组;
  • 第二个*给出一个数组,其中包含C列中的所有值,该值与同时满足两个条件的行相对应;
  • MAX的结果为最大值。

只是一个棘手的部分,在X和I后面带有点。不确定这是否是数据的一部分,如果不是,那么您当然必须修改条件。与在公式中对其进行硬编码相比,使用单元格引用要好得多。

答案 1 :(得分:0)

使用执行类似于数组的计算的标准公式

AGGREGATE

使用以下公式。由于它执行类似于数组的计算,因此请避免使用F:F之类的完整列引用,因为它可能导致许多不必要的计算。

=AGGREGATE(14,6,C1:C6/((A1:A6="X")*(B1:B6="I")),1)

您可以将公式设置为基于其他单元格中的值进行搜索,而不是对搜索值进行硬编码。我在下面的示例中使用了以下公式:

=AGGREGATE(14,6,C1:C6/((A1:A6=$E2)*(B1:B6=$F2)),1)

enter image description here

此答案假定您在C列中的日期时间存储为数字。如果将其存储为字符串,则需要对公式进行修改才能将其转换为excel的数字日期。

答案 2 :(得分:0)

不需要复杂的AGGREGATE或讨厌的数组公式。

一个简单的MAXIFS可以满足您的要求:

=MAXIFS($C$2:$C$7,$A$2:$A$7,$E$2,$B$2:$B$7,$F$2)

enter image description here