使用Google Sheets,我目前正在使用这个公式来查找指定区域中满足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))不起作用了。有人知道我怎么才能让它工作吗?
发布于 2017-11-20 15:30:17
index不适用于ArrayFormula
请尝试:
=ArrayFormula(IFERROR(REGEXEXTRACT( TRANSPOSE(QUERY(TRANSPOSE(IFERROR( 1 * D9:K12)),,2^99)), "\d+"),"no number 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"))
https://stackoverflow.com/questions/47360208
复制相似问题