Excel:查找由第二列确定的范围中的第一个最低值

我有两个专栏,一个是date,另一个是那个在那个date不能参加活动的人数。 date被格式化为exceldate。 我想find在当前date之后最less的人数不能达到的第一个date。 理想情况下,我想解决这个问题,而不诉诸VBAmacros。

给定列A =date,B =人数添加第三个列表:

=IF(A1>TODAY(),B1,"") 

然后使用查找来查找最小条目的date:

 =INDEX(A:A,MATCH(MIN(C:C),C:C,0)) 

更新与Barrys修复(谢谢!)

假设date在A2:A100中,B2:B100中的数字尝试使用“数组公式”

=MIN(IF(A2:A100>TODAY(),IF(B2:B100=MIN(IF(A2:A100>TODAY(),B2:B100)),A2:A100))

公式需要使用CTRL + SHIFT + ENTER进行确认,以便在公式栏中的公式周围出现{和}等花括号

这是今天之后的最早的date(最早的date),也是今天之后最低的date

确定这是一个有趣的一个弄清楚:)

不幸的是,这种方法没有考虑当前date,你可以通过按datesorting数据来解决这个问题,然后将MAX和MATCH函数限制在你正在search的date范围内(我还不够Excel大师找出一种方法来做到这一点,没有某种forms的预先组织的数据)。

让我们使用下面的数据:

  A | B 1 1/05/2012 | 1 2 2/14/2012 | 4 3 3/17/2012 | 2 4 4/01/2012 | 3 5 5/12/2012 | 1 

使用列B中的值作为参与者,并将A作为date,可以看到最早/最高的(实现Berry的build议(使函数更易读)):

 =INDEX(A1:A5, MATCH(MAX(B1:B5),B1:B5,0), 1) 

如果别人能弄清楚我错过了什么,下面是正在发生的事情的细节:

 =MAX(B1:B5) -> 4 Looks for the largest attendees count =MATCH(MAX(B1:B5),B1:B5,0) -> 2 find the first row where this number occurs. =INDEX(A1:A5, MATCH(MAX(B1:B5),B1:B5,0), 1) -> 2/14/2012 which is the value found at that row in the first column