Excel 提取与列ID唯一对应的两个最小值

Excel 提取与列ID唯一对应的两个最小值,excel,excel-formula,excel-2010,excel-2007,vba,Excel,Excel Formula,Excel 2010,Excel 2007,Vba,我有两行,即:ID和Time。我想提取对应于唯一列ID的两个最小时间值 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 2

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

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
您可以使用(例如15)轻松地实现值(带标准)

E4中的公式为

=AGGREGATE(15, 6, (B:B)/(A:A=D4), COUNTIF(D$4:D4, D4))
根据需要填写。由于我们使用的是小的子函数,我们可以通过增加k参数轻松检索第二、第三等比率,就像我在实现累进范围和浮动标准时所做的那样

6是用于忽略错误值的聚合参数。通过将时间除以A列是否为正确的ID,我们将生成
#DIV/0我们不希望看到的任何错误都被忽略


⑨Excel 2010中引入了。它在以前的版本中不可用。

我从C2开始使用这个数组公式来获得ID对

=IFERROR(INDEX(A$2:A$10,MATCH(TRUE,(COUNTIF(C$1:C1,A$2:A$10)<2),0)),"")
必须使用CtrlShift输入

在数据子集上进行测试。每个ID必须至少有两次

应该适用于大多数版本的Excel


使用高级填充扫描您发布的训练我只想补充一点,我强烈建议不要引用整个专栏。这样的话,你可能会看到超过一百万次不必要的计算。这只是考虑公式的一次迭代。我想,复制到大约50行几乎会使Excel崩溃。这很公平。在提供完整列引用时,我真的应该更加明智。我认为这更像是知道使用完整列引用可以“摆脱”哪些函数的情况,即COUNTIF(s)、SUMIF(s)。使用阵列处理功能(SUMPRODUCT、AGGREGATE等,加上任何需要CSE的构造),这是灾难性的。
=SMALL(IF(A$2:A$10=C2,B$2:B$10),COUNTIF(C$2:C2,C2))