使行名称列表的公式独立于整列和第一行

时间:2018-09-26 06:56:04

标签: excel excel-formula

我有以下Excel电子表格:

     A            B     C        D      E            F            G        H
1                 Q1     Q2      Q3     Q4   Search criteria:     60     Asset 2
2   Asset 1       15     85      90     70                               Asset 3
3   Asset 2       40     80      45     60                               Asset 3
4   Asset 3       30     60      55     60                               Asset 5                       
5   Asset 4       12     72      25     15
6   Asset 5       60     48      27     98
7 

Cells A1:E6中,我的资产与第一季度至第四季度相比有所不同。
Column H中,列出与Cell G1中的搜索条件匹配的所有资产。 在这种情况下,搜索条件为60,可以在Cells A1:E6中找到Assets 235的搜索条件。

要创建列表,我使用here中的公式:

=INDEX(A:A,SMALL(IF($B$2:$E$6=$G$1,ROW($B$2:$E$6)),ROW(1:1)))

到目前为止,所有这些都工作正常。


现在,当我将工作表中的Cells A1:E6例如移至D9:H14时,只有在数组公式仍然引用A:AROW(1:1)时,数组公式才能继续工作如果用户决定删除ROW(1:1),则会出现问题。因此,我尝试将公式修改为:

=INDEX($D$9:$D$14,SMALL(IF($E$10:$H$14=$J$10,ROW($E$10:$H$14)),ROW($D$9:$H$9)))

但是,通过此修改,我得到了#NUM!错误。

您是否知道是否可以使数组公式独立于A:AROW(1:1),所以它仅引用Cells A1:E6并在移动这些单元格时自动移动?

2 个答案:

答案 0 :(得分:1)

如果您使用的是excel 2013或更高版本,则可以使用以下公式。

=IFERROR(INDEX($D$10:$D$14,AGGREGATE(15,6,ROW($1:$5)/($E$10:$H$14=$J$10),ROW(1:1))),"")

enter image description here

答案 1 :(得分:0)

您可以将A:A限制为A1:A6,以便在移动时根据需要进行调整。因此,您的公式应该是现在

=INDEX(A1:A6,SMALL(IF($B$2:$E$6=$G$1,ROW($B$2:$E$6)),ROW(1:1)))

对于ROW(1:1),您的顶部公式应始终为ROW(1:1),当您向下拖动时,下一个公式应具有ROW(2:2)。当您将顶部公式移动到其他位置并且ROW(1:1)更改为ROW(9:9)之类的东西时,请将其更改为ROW(1:1)

请注意,“移动”公式与“向下拖动”不同。

编辑:

因此,在移动数据集之后,最上面的公式应该是:

=INDEX($D$9:$D$14,SMALL(IF($E$10:$H$14=$J$10,ROW($E$10:$H$14)),ROW(1:1)))

这是假设单元格G1(条件)也已移至J10