提取对应于唯一到列ID的两个最小值

时间:2015-08-21 07:22:29

标签: excel excel-vba excel-formula excel-2010 excel-2007 vba

我有两行,即:IDTime。我想提取对应于唯一列ID的两个最小Time值。

ID  Time
27604   13:00:12
27604   13:00:32
27604   13:00:34
27604   13:00:38
27604   13:00:41
27604   13:00:47
27604   13:00:50
27605   13:00:20
27605   13:00:23
27605   13:00:39
27605   13:00:42
27605   13:00:45
27605   13:00:48
27605   13:00:54
27605   13:00:57
27605   13:01:00
27606   13:00:49
27606   13:00:52
27606   13:00:55
27606   13:01:01
27606   13:01:04
27606   13:01:07
  

对于ID 27604,我想仅提取13:00:12和13:00:32。

     

对于ID 27605,我想仅提取13:00:20和13:00:23。

     

对于ID 27606,我只想提取13:00:27和13:00:30。

我想提取所有这些值,如下所示:

27604   13:00:12
27604   13:00:32
27605   13:00:20
27605   13:00:23
27606   13:00:49
27606   13:00:52

2 个答案:

答案 0 :(得分:3)

您可以使用SMALL AGGREGATE¹ function's轻松获得SMALL sub-function值(带标准)(例如15)。

AGGREGATE MINIF

E4中的公式是,

=AGGREGATE(15, 6, (B:B)/(A:A=D4), COUNTIF(D$4:D4, D4))

根据需要填写。由于我们使用的是SMALL子函数,我们可以通过增加 k 参数来轻松检索第二,第三等比率,就像我使用COUNTIF function实现渐进范围一样和浮动标准。

6 是用于忽略错误值的AGGREGATE参数。通过将时间除以A列是否是正确的ID,我们就会产生#DIV/0!个错误,我们不希望这些错误被忽略。

¹ Excel 2010引入了AGGREGATE¹ function's。在以前的版本中不可用。

答案 1 :(得分:0)

我使用从C2开始的这个数组公式来获取ID'

的对
=IFERROR(INDEX(A$2:A$10,MATCH(TRUE,(COUNTIF(C$1:C1,A$2:A$10)<2),0)),"")

这个从D2开始获得前两次

=SMALL(IF(A$2:A$10=C2,B$2:B$10),COUNTIF(C$2:C2,C2))
必须使用 Ctrl Shift 输入

输入

测试了一部分数据。每个ID必须至少两次。

适用于大多数版本的Excel。

enter image description here