excelfind第二个匹配的索引匹配公式

我有以下公式:

=INDEX(A:A;MATCH(1;(B:B=H1)*(C:C=I1)*(NOT(ISBLANK(D:D))))*((ISBLANK(E:E))));0)) 

现在我想从A:匹配这个公式和匹配函数中的条件的列中得到第二个结果。 有了这个函数,我只得到了第一个匹配的ABCDE(结果),但是还有另一个FGHI也匹配这个公式。 但它是第一个下面的几个单元格。 我的第一场比赛是ABCDE,而我的第二场比赛是FGHI。 我想取回后者。 我尝试了不同的方式,但我无法绕过这一个。 请在这方面帮助我。 谢谢。

您将要减less完整的列引用,使其更接近数据的实际范围。 我最喜欢的方法是将SMALL与一个INDEX行数组合SMALL ,这个行数组将replace原始公式中的MATCH

=INDEX(A$2:A$9999; SMALL(INDEX(ROW($1:$9998)+((B$2:B$9999<>H1)+(C$2:C$9999<>I1)+NOT(LEN(D$2:D$9999))+NOT(LEN(E$2:E$9999)))*1E+99;;); ROW(1:1)))

我用一个简单的查找和replace来改变我的逗号列表分隔符到分号,所以我很抱歉,如果需要小的编辑工作在您的系统上,

在为自己的目的进行抄录时,请记住, ROW($1:$9998)ROW($1:$9998)中的位置,而不是工作表上的实际行。 ROW(1:1)只是一个SMALL的增量计数器当你填满时,它将提供1,2,3等

哇! 谢谢。 这是最终的工作版本。 我在改编中遇到了一些小错误:

 =INDEX(INDIRECT("'"&file_list!$C$3&"'!$F$2:$F$999"); SMALL(INDEX(ROW(INDIRECT("'"&file_list!$C$3&"'!$1:$998"))+((INDIRECT("'"&file_list!$C$3&"'!$B$2:$B$999")<>parameters!$C$3)+(INDIRECT("'"&file_list!$C$3&"'!$i$2:$i$999")<>parameters!$A$2)+NOT(LEN(INDIRECT("'"&file_list!$C$3&"'!$d$2:$d$999")))+(LEN(INDIRECT("'"&file_list!$C$3&"'!$H$2:$H$999"))))*1E+99;;); ROW(INDIRECT("'"&file_list!$C$3&"'!$2:$2")))) 

你是英雄。

Jeeped增编:

直到你明白这个实际上是如何工作的,我离英雄还很近。 我试图把这个评论,但我太长,所以我使用我的编辑权限,希望澄清。

如果您希望将来使用校长,理解Excel本机函数的组合如何工作非常重要。 第一个ROW(INDIRECT("'"&file_list!$C$3&"'!$1:$998")将按照书面的方式工作,但会更好,因为ROW($1:$998")这只是返回一个数字在"'"&file_list!$C$3&"'!$F$2:$F$999" ,这个数字来自哪里并不重要,公式中的条件决定它是否是有效的行号, DO需要file_list!$C$3的工作表名称,因为它们的单元格值正在被检查。

以类似的方式,如果你想 '"&file_list!$C$3&"'!$F$2:$F$999" 第二个匹配的行, ROW(INDIRECT("'"&file_list!$C$3&"'!$2:$2"))应该是ROW(2:2) '"&file_list!$C$3&"'!$F$2:$F$999"这部分公式只是SMALL一个增量,如果你把一行(1:1)放在一个单元格中,填满你会得到1,2,3等 。这个转换成SMALL函数就像SMALL(<a bunch of matching row numbers>, first)然后SMALL(<a bunch of matching row numbers>, second)然后SMALL(<a bunch of matching row numbers>, third)等等SMALL(<a bunch of matching row numbers>, third) 。你不是试图返回Sheet1!A1,Sheet1!A2,Sheet1!A3等 。你想要的Allk是1,2,3等 ,作为k参数填入SMALL

Office.Microsoft.com Excel函数引用并不总是最有用的地方,但在这里他们是反正。

行function

小function