查找第二,第三,.. nth个匹配项,并从最小到最大返回排序结果?

时间:2020-02-05 10:25:31

标签: excel excel-formula

我尝试在Google上进行搜索,但尚未找到解决方案。 我想查找与条件匹配的值,并按从小到大的顺序返回结果。我应该使用什么公式来做到这一点? 非常感谢。

enter image description here

4 个答案:

答案 0 :(得分:1)

我将使用Aggregate的SMALL函数:

=IFERROR(AGGREGATE(15,6,$B$2:$B$10/
(($A$2:$A$10=$D2)*($B$2:$B$10>=TIME(7,0,0))*($B$2:$B$10<=TIME(10,0,0))),COLUMN(A1)),"")

enter image description here

答案 1 :(得分:1)

要使用公式从一组数据中检索多个匹配值,可以使用IF和SMALL函数找出每个匹配项的行号并将该值反馈给INDEX。

{=INDEX(array,SMALL(IF(vals=val,ROW(vals)-ROW(INDEX(vals,1,1))+1),nth))}

位置:

  • 数组: 1个包含结果的列范围->列:B:B
  • 值: 1列查找数组->列:A:A
  • val:查找值->列:D:D
  • nth ->将第1行的值更改为1,2,3,4等,而不是第1,第2,第3 ......

一如往常,在使用数组公式时,请使用ctrl + shift + enter代替普通回车

答案 2 :(得分:1)

如果您在Time列中有重复的值,则以下数组公式会有所帮助:

{=IFERROR(SMALL(IF(($D2=$A$2:$A$12)*($B$2:$B$12>=TIME(7,0,0))*($B$2:$B$12<=TIME(10,0,0)),IF(COUNTIF($D2:D2,$B$2:$B$12)=0,$B$2:$B$12)),1),"")}

ctrl + shift + enter确认编辑后的数组公式

enter image description here

答案 3 :(得分:1)

如果您具有O365功能和UNIQUE功能,则可以使用:

D2: =UNIQUE(Name) 'to generate the list of names

E2: =IFERROR(SMALL(FILTER(Name:Time,(Name=$D2)*(Time>=TIME(7,,))*(Time <=TIME(10,,))),COLUMNS($A:A)),"")

选择E2并向下复制

enter image description here