在某个点之后输出列中单元格的数组

时间:2017-04-26 08:34:20

标签: excel excel-formula

我有一个数组公式,可以输出非0或文本范围内的所有值。

此范围主要是数字和一个文本单元格,它是描述性标题。

但是,我需要数组只在检测到列中存在的文本时才开始输出(这可能在单元格AA4中,或者可能是AA40,每次都不同)并且仅在此点之后输出数字

例如,在列中给出以下内容:

525
0
22
464
Type
233
0
453
665

阵列只能输出数字233,453,665。

目前它只是查看范围并输出任何不是0或文本的内容,无论它是在标题文本的上方还是下方。因此,目前525,22,464,233,453,665都将被输出。

=IFERROR(INDEX($AA$4:$AA$978, SMALL(IF($AA$4:$AA$978<>0, ROW($AA$4:$AA$978)-MIN(ROW($AA$4:$AA$978))+1, ""), ROW(A1))),"")

我需要更改/添加什么来执行此任务?

2 个答案:

答案 0 :(得分:4)

IF语句中的 value_if_false 子句并非绝对必要。另外,对于ROWS k 参数,ROWSMALL更严格(有关原因的解释,请参阅here。)

你需要:

=IFERROR(INDEX($AA$4:$AA$978,SMALL(IF($AA$4:$AA$978<>0,IF(ROW($AA$4:$AA$978)-MIN(ROW($AA$4:$AA$978))+1>MATCH("Type",$AA$4:$AA$978,0),ROW($AA$4:$AA$978)-MIN(ROW($AA$4:$AA$978))+1)),ROWS(A$1:A1))),"")

除非您实际使用Excel表格,否则我可能会修改上面的一些参考资料,以使其更有效率,即:

=IFERROR(INDEX($AA:$AA,SMALL(IF($AA$4:$AA$978<>0,IF(ROW($AA$4:$AA$978)>MATCH("Type",$AA:$AA,0),ROW($AA$4:$AA$978))),ROWS(A$1:A1))),"")

对于不到一千个单元格的范围,您可能继续使用IFERROR设置,但请注意,对于较大的范围,这可能是非常低效的 - 一种解释和替代方案设置here

此致

答案 1 :(得分:1)

请尝试使用Array Formula,这需要一个特殊的按键Ctrl+Shift+Enter,而不是单独输入。

=IFERROR(INDEX(INDEX($AA$4:$AA$978,MATCH(TRUE,ISTEXT($AA$4:$AA$978),0)+1):$AA$978,SMALL(IF(INDEX($AA$4:$AA$978,MATCH(TRUE,ISTEXT($AA$4:$AA$978),0)+1):$AA$978<>0,ROW(INDEX($AA$4:$AA$978,MATCH(TRUE,ISTEXT($AA$4:$AA$978),0)+1):$AA$978)-ROW(INDEX($AA$4:$AA$978,MATCH(TRUE,ISTEXT($AA$4:$AA$978),0)+1))+1),ROWS(A$1:A1))),"")

并将其复制下来。