查找指定范围内的第一个编号单元格,然后将ArrayFormula应用于Google表格中的该公式

时间:2017-11-17 22:27:53

标签: google-sheets

使用Google表格,我目前正在使用此公式查找指定范围内符合ISNUMBER()条件的第一个单元格:

=INDEX(FILTER(AC!D9:K9,ISNUMBER(AC!D9:K9)), 1)

这很好用。但是我需要将它应用于整个列,因此一种替代方法是将其向下拖动,以便后续单元格包含类似的公式,例如,此下面的单元格将包含:

=INDEX(FILTER(AC!D10:K10,ISNUMBER(AC!D10:K10)), 1)

这也有效。但我想找到一种方法使其更清洁并使用ArrayFormula将其应用于整个列,并使用默认的Ctrl + Shfit + Enter公式:

=ArrayFormula(INDEX(FILTER(AC!D9:K9,ISNUMBER(AC!D9:K9)), 1))

不工作。有谁知道我怎么能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

index不适用于ArrayFormula

请尝试:

=ArrayFormula(IFERROR(REGEXEXTRACT( TRANSPOSE(QUERY(TRANSPOSE(IFERROR( 1 * D9:K12)),,2^99)), "\d+"),"no number here"))

enter image description here

工作原理

IFERROR( 1 * D9:K12)

仅返回范围D9:K12中的数字。

=TRANSPOSE(QUERY(TRANSPOSE(IFERROR( 1 *D9:K12)),,2^99))

给出一个由空格分隔的数字数组。如果一行没有数字,它将返回空格。

REGEXEXTRACT( expression , "\d+")

将从字符串中找到第一个数字。

修改

将数字转换为数字格式:

=ArrayFormula(IFERROR(REGEXEXTRACT( TRANSPOSE(QUERY(TRANSPOSE(IFERROR(1*D9:K12)),,2^99)), "\d+") * 1,"no number here"))