Excel 具有多个条件的范围内的最小值

Excel 具有多个条件的范围内的最小值,excel,datetime,excel-formula,max,Excel,Datetime,Excel Formula,Max,我有一张Excel表格: A. B. C. X. I. 10/10/2018 06:27:54 X. I. 12/10/2018 13:00:00 X. U.

我有一张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
获取活动
I
的最大值(C列)?

我会使用数组公式(ctrl+shift+enter)来实现这一点:
=最大值((-(A1:A6=“X.”)*(-(B1:B6=“I.”)*(C1:C6))

说明:

  • (A1:A6=“X.”
    生成一个数组,其中满足条件的值为
    真/假
  • --
    将其转换为
    1/0
  • 第一个
    *
    (数组乘法)给出了一个
    1/0
    的数组,其中两个条件都满足
  • 第二个
    *
    给出了一个数组,其中包含与满足这两个条件的行相对应的列C中的所有值
  • MAX
    会产生最大值

只是一个棘手的部分,在X和I后面有点。不确定这是否是你的数据的一部分,如果不是,你当然要修改条件。与其在公式中硬编码,不如使用单元格引用。

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

总数的 使用以下公式。因为它执行类似于数组的计算,所以避免使用像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)


这个答案假设C列中的日期时间存储为数字。如果它存储为字符串,则需要对公式进行修改,以便将其转换为excel的数字日期。

不需要复杂的聚合或数组公式

一个漂亮、简单的MAXIFS可以满足您的需求:

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

请问您试过什么?有很多关于Max-Ifs的例子。您还可以使用数据透视表。你的标题写的是最小值,问题主体写的是最大值,但同样的原则也适用。用下面的公式来确定你的日期时间值在C中是否是表示日期的数字或字符串
=isnumber(C2)
如果结果为true,则表示该数字不需要转换。感谢您的回复。但是MAXIFS函数在我的excel版本中不可用。@ShivamShrivastava我只想在
AGGREGATE
函数上添加两条注释:(1)难以审核/理解,因为实际功能隐藏在代码/参数后面(如果不查阅文档,谁知道
14
表示
LARGE
6
表示
忽略错误
?)(2)如果您知道输入数据中可能存在错误并且有意忽略这些错误,则第二个参数可能很有用,或者很危险,特别是对于较大的输入数据范围,因为它不会对输入数据中的错误提供反馈,因此在您不知道的情况下,结果可能会意外/错误。