阵列输出单元在列之后的某个点(Array that outputs cells in a colum

2019-09-29 07:58发布

我有输出在不是0或文本的范围内的所有值的阵列式。

这个范围主要是数字和文本中的一个细胞,其是描述性标题。

然而,我需要的阵列开始输出仅当它检测到存在于列中的文本(这可能是在细胞AA4或可能是AA 40,它每次是不同的),并且仅输出这点之后的数字。

例如,给定的列中的以下内容:

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))),"")

我需要做什么来改变/添加来执行这项任务?

Answer 1:

在内的value_if_false条款IF语句不是绝对必要的。 此外, ROWS比更严格ROWSMALL的参数k(见这里的一个解释,为什么)。

你需要:

=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设置,但要注意的是,对于较大的范围,这是相当低效-的解释和替代设置是给这里 。

问候



Answer 2:

试试这个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))),"")

并复制下来。



文章来源: Array that outputs cells in a column AFTER a certain point