Excel 将第n个匹配项添加到索引/匹配公式

Excel 将第n个匹配项添加到索引/匹配公式,excel,array-formulas,Excel,Array Formulas,我在添加在相当复杂的索引/匹配公式(Excel 2016)中返回第n个匹配的功能时遇到了一些问题,我有一个索引/匹配公式可以根据需要工作,但当我尝试应用返回后续匹配的功能时,我会得到一个“#NUM”错误。 以下是有效的索引/匹配: {=INDEX(INDIRECT("'"&$D$12&"'!$B:$S"),MATCH(1,(INDIRECT("'"&$D$12&"'!$O:$O")=$D$4)*(INDIRECT("'"&$D$12&"'!$R:$

我在添加在相当复杂的索引/匹配公式(Excel 2016)中返回第n个匹配的功能时遇到了一些问题,我有一个索引/匹配公式可以根据需要工作,但当我尝试应用返回后续匹配的功能时,我会得到一个“#NUM”错误。 以下是有效的索引/匹配:

{=INDEX(INDIRECT("'"&$D$12&"'!$B:$S"),MATCH(1,(INDIRECT("'"&$D$12&"'!$O:$O")=$D$4)*(INDIRECT("'"&$D$12&"'!$R:$R")=$D$5)*(INDIRECT("'"&$D$12&"'!$S:$S")=$C$6)*(INDIRECT("'"&$D$12&"'!$E:$E")=$D$7)*(INDIRECT("'"&$D$12&"'!$M:$M")>=$H$5)*(INDIRECT("'"&$D$12&"'!$M:$M")<=$I$5)*(INDIRECT("'"&$D$12&"'!$L:$L")>=$F$8)*(INDIRECT("'"&$D$12&"'!$L:$L")=$F$9),0),1)}
[代码><<代码>{<代码><代码>{{<代码>{{<代码>{{<代码>{{<代码>{{{{{{{{{{{{{{{{{{{{{{{<索引(间接(“““““”””,以及$D$D$12及$D$12((((((((((((“““““”””)及$D$D$12美元$12美元12及$12((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((““““““““““““““““““““““““““““”””””””””””””””””)及$$$$$“!$L:$L”)=$F$9),0),1)} 如您所见,它对图纸参照使用间接参照,因为这是用户控制的。这是我尝试过的调整版本(并以各种方式进行了调整),但仍然会出现“#NUM”错误


(代码><<代码>{{<代码>{<代码>{<代码>{<代码>{<代码>{<代码>{{<代码>{{{{{{{{<代码>>索引(间接(((““““”””)和$D$12美元12和12美元D$12和((((““,,,,,,,,(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))))和$$$$$$$$$$$$$$$$$$$&$D$12&“!$L:$L”)为什么不使用高级过滤器呢?这是一个大数组公式,它们的列表会导致Excel在计算过程中的速度减慢,因为您使用的是间接的,每次Excel重新计算时,它都会重新计算,从而减慢速度。它甚至可能会导致Excel定期崩溃。谢谢@ScottCraner,不幸的是,高级过滤器r不容易在我正在使用的工作表中实现,因此我一直在试图找到一种不同的方式来显示各种用户控制标准的所有结果。索引/匹配公式是我所能看到的最佳解决方案,但你是对的,它可能会由于计算而使工作表无法使用。你知道有没有更简单的方法方式(除高级过滤器外)要提取/显示COUNTIF函数的结果?不,在这种特定情况下,我会使用简单的公式,将数据以可用作高级筛选条件的格式放入屏幕外的区域。然后,在工作表\u更改事件中使用vba对您想要的输出进行实际的高级筛选。这可能会是最快和最容易维护的。数据将是实时的,并且随着用户更改相应单元格中的值而变化。您不能使用定义的名称范围和countif查找列吗?迪克:您可以发布一个屏幕截图,显示用户是如何控制它的吗?我认为与查找表相结合的CHOOSE函数可以ly帮助(如果在Excel表上使用它,速度会非常快)或数据透视表(使用一点VBA或PowerQuery将所有源数据拉入一个易于查询的临时表)。但我想了解您的用户正在选择什么。为什么不使用高级过滤器。这是一个大数组公式,它们的列表将导致Excel在it计算中的速度减慢,因为您使用的是间接计算,它将在每次Excel重新计算时重新计算,从而减慢速度。它甚至可能导致Excel重新计算ash Regulary。感谢@ScottCraner,不幸的是,高级过滤器不容易在我正在使用的工作表中实现,因此我一直在试图找到一种不同的方式来显示各种用户控制标准的所有结果。索引/匹配公式是我能看到的最佳解决方案,但你是对的,它可能会使工作表无法使用由于计算的原因,您是否知道是否有更简单的方法(除了高级过滤器)要提取/显示COUNTIF函数的结果?不,在这种特定情况下,我会使用简单的公式,将数据以可用作高级筛选条件的格式放入屏幕外的区域。然后,在工作表\u更改事件中使用vba对您想要的输出进行实际的高级筛选。这可能会是最快和最容易维护的。数据将是实时的,并且随着用户更改相应单元格中的值而变化。您不能使用定义的名称范围和countif查找列吗?迪克:您可以发布一个屏幕截图,显示用户是如何控制它的吗?我认为与查找表相结合的CHOOSE函数可以我需要一个简单的帮助(如果在Excel表上使用它,速度会非常快)或数据透视表(使用一点VBA或PowerQuery将所有源数据拉到一个易于查询的临时表中)。但我想了解用户正在选择什么。
{=INDEX(INDIRECT("'"&$D$12&"'!$B:$B"),SMALL(IF(INDIRECT("'"&$D$12&"'!$O:$O")=$D$4,IF(INDIRECT("'"&$D$12&"'!$R:$R")=$D$5,IF(INDIRECT("'"&$D$12&"'!$S:$S")=$C$6,IF(INDIRECT("'"&$D$12&"'!$E:$E")=$D$7,IF(INDIRECT("'"&$D$12&"'!$M:$M")>=$H$5,IF(INDIRECT("'"&$D$12&"'!$M:$M")<=$I$5,IF(INDIRECT("'"&$D$12&"'!$L:$L")>=$F$8,IF(INDIRECT("'"&$D$12&"'!$L:$L")<=$F$8,ROW(INDIRECT("'"&$D$12&"'!$B:$B"))-ROW(INDEX(INDIRECT("'"&$D$12&"'!$B:$B"),2))+1)))))))),1))}