![Excel:使用什么公式来返回一组查找值的最小值或最大值?](https://linux22.com/image/1398428/Excel%EF%BC%9A%E4%BD%BF%E7%94%A8%E4%BB%80%E4%B9%88%E5%85%AC%E5%BC%8F%E6%9D%A5%E8%BF%94%E5%9B%9E%E4%B8%80%E7%BB%84%E6%9F%A5%E6%89%BE%E5%80%BC%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC%E6%88%96%E6%9C%80%E5%A4%A7%E5%80%BC%EF%BC%9F.png)
我正在寻找一种方法来计算下面屏幕截图中 D 列和 E 列显示的值。D 列包含 B 列中与 A 列中的名称匹配的最早日期。同样,E 列包含 C 列中与 A 列中的名称匹配的最晚日期。
例如,对于 A 列中所有出现“Bob”的实例,D 列应包含 B 列中最早的“日期行”,其中 A 列 =“Bob”(在本例中为 2013 年 12 月 1 日)。
我知道这可以使用数据透视表轻松完成,但在这种情况下,我需要使用公式或以编程方式来完成。
数据是使用 VBA 生成的,因此,在没有公式化解决方案的情况下,我将简单地恢复计算所需值作为程序的一部分(注意:我不是在问如何做到这一点)。由于数据集的复杂性(上述示例是粗略的简化),我需要大约一天的时间才能在代码中实现它,因此如果可能的话,我宁愿避免这样做。
我猜测可能要使用数组公式,但我很惭愧地承认我根本不知道如何使用它们。
非常感谢任何帮助/指点。
答案1
一般来说:
{=MIN(IF(MatchRange=MatchVal,ValueRange))}
或者
{=MAX(IF(MatchRange=MatchVal,ValueRange))}
因此,翻译为原始例子的条件...
单元格 D2 将包含以下数组公式:
{=MIN(IF(A$2:A$7=A2),B$2:B$7)}
单元格 E2 将包含:
{=MAX(IF(A$2:A$7=A2),C$2:C$7)}
注意:不要在上面的例子中输入括号/花括号。输入不带括号的公式,然后按Ctrl+ Shift+Enter创建数组公式。
D2:E2 中的公式将“自动填充”到 D2:E7。
对 teylyn 充满感激,如果没有他的帮助性评论,我可能会像菜鸟一样坐在这里等待答案。