Excel - 从相应数据中获取第 2 个或第 n 个匹配的字符串

Excel - Getting the 2nd or nth matched string from your corresponding data

与我之前的帖子
1.
2.

我发现 PHP PHP 的电子表格库尚未允许使用 AGGREGATE() 和复杂的 formulas/functions 但我很害怕需要他们的功能

回过头来看,我的 Excel 中有 2 列(由我使用 CodeIgniter 和 Laravel 制作的网络应用程序生成)


问题是,Article Count 列(右侧)包含 2 个值 54,这应该属于 2不同的 Publications(在左侧)但使用公式 =INDEX(E:E,MATCH(M4,J:J,0)) 它只获取第一个匹配的 Publication.

输出应如下所示:

原Table:

我的问题是,Excel 中的正确函数或代码是什么,以便我可以检索匹配数据的 SECOND 发布? 我的目标是针对那些 文章数 54Publications,但我想瞄准 SECOND ONE 这是字母 D 而不使用 [=77 的 Aggregate() 函数=]

这是我用过的代码
1) =LARGE(J4:J38,1) - J4:J38 是我的原始数据范围,我用它来按降序获得 5 个最高的数字
2) =INDEX(E4:E38,MATCH(M4,J4:J38,0)) - 我正在使用它来检索与 文章计数

匹配的 出版物名称

您需要使用 AGGREGATE 的 SMALL sub-function 到 return 最小匹配行号并调整 k 参数以适应重复排名。

'in M4
=LARGE(J:J, ROW(1:1))
'in L4
=INDEX(I:I, AGGREGATE(15, 7, ROW(:)/(J:J=M4), COUNTIF(M:M4, M4)))

enter image description here

经过聊天交流,我们得到了这个正确的公式:

=INDEX(E:E,IF(M4=M3,MATCH(L3,E:E,0),0)+MATCH(M4,OFFSET(J,IF(M4=M3,MATCH(L3,E:E,0),0),0,COUNT(J:J)-IF(M4=M3,MATCH(L3,E:E,0),0),1),0))

这是如何工作的: 此 IF(M4=M3,MATCH(L3,E:E,0),0) returns 上一行的出版物标题在标题数组 (E) 中的位置,以防当前出版物计数与前一个相同。让我们称这个数字为 X。我们不使用 J2:J38 作为结果,而是使用 J(2+X):J38。这个技巧是通过使用偏移量来切断前一行已经使用的前一部分来完成的。这样,在重复发布计数时,已经提到的标题将被忽略。