Php Excel-从相应数据中获取第二个或第N个匹配字符串

Php Excel-从相应数据中获取第二个或第N个匹配字符串,php,excel,laravel,codeigniter,phpspreadsheet,Php,Excel,Laravel,Codeigniter,Phpspreadsheet,与我以前的职位 1. 2. 我发现PHP的PHPSReadSheet库还不允许使用AGGREGATE()和复杂的公式/函数,但我迫切需要它们的功能 回想起来,我的Excel中有两列(由我的web应用程序由CodeIgniter和Laravel制作而成) 问题是,文章计数列(右侧)包含两个54的值,该值应属于两种不同的出版物(左侧),但使用公式=索引(E$4:E$38,匹配(M4,J$4:J$38,0))它只获取第一个匹配的出版物 输出应如下所示: 原始表格: 我的问题是,Exc

与我以前的职位
1.
2.

我发现PHP的PHPSReadSheet库还不允许使用
AGGREGATE()
和复杂的公式/函数,但我迫切需要它们的功能

回想起来,我的Excel中有两列(由我的web应用程序由CodeIgniter和Laravel制作而成)


问题是,文章计数列(右侧)包含两个54的值,该值应属于两种不同的出版物(左侧),但使用公式
=索引(E$4:E$38,匹配(M4,J$4:J$38,0))
它只获取第一个匹配的出版物

输出应如下所示:

原始表格:

我的问题是,Excel中的正确函数或代码是什么,这样我就可以检索匹配数据的第二次发布? 我的目标是那些文章数为54的出版物,但我想瞄准第二个,即字母D,而不使用Excel的Aggregate()功能

这是我用过的密码
1)
=LARGE(J4:J38,1)
-J4:J38是我的原始数据范围,我用它来按降序获得5个最高的数字

2)
=索引(E4:E38,MATCH(M4,J4:J38,0))
-我用它来检索与文章数量匹配的出版物名称

您需要使用AGGREGATE的小子函数返回最小的匹配行号,并调整k参数以适应重复的排名

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

在聊天中交流后,我们得到了正确的公式:

=INDEX(E$2:E$38,IF(M4=M3,MATCH(L3,E$2:E$38,0),0)+MATCH(M4,OFFSET(J$2,IF(M4=M3,MATCH(L3,E$2:E$38,0),0),0,COUNT(J$2:J$38)-IF(M4=M3,MATCH(L3,E$2:E$38,0),0),1),0))
工作原理:
如果当前出版物计数与前一行相同,则此
IF(M4=M3,MATCH(L3,E$2:E$38,0),0)
返回前一行出版物标题在标题数组(E)中的位置。让我们把这个数字称为X。我们使用J(2+X):J38,而不是使用J2:J38作为结果。这个技巧是通过使用offset来切断上一行已经使用的上一个部分来实现的。这边在重复发表的文章中,已经提到的标题被忽略了。

是的,先生,GeordMeNouTuri,我们也考虑到,因为可能有5个最大的数据中有3个或更多的重复,这些数据具有相同的价值。你还告诉我你在前5个出版物名称和计数中使用的列和行吗?你好,先生,我正在寻找一个不需要AGGREGATE()函数的解决方案,因为它被PhpSpreadsheet库禁用或禁止:(有早期(xl2010之前)的数组公式不聚合;有很多示例。经过长时间的聊天,最终在不使用
AGGREGATE()的情况下得到了正确的答案)
功能,无重复!非常感谢您对我的理解和耐心:D