从索引指定的特定列中获取第一个非空值。 高强
这个数组公式允许我通过search列A中的第一个非空值来填充D4(参见链接 – https://exceljet.net/formula/get-first-non-blank-value-in-a-list )
=INDEX(A2:A1000,MATCH(FALSE,ISBLANK(A2:A1000),0))
不过,我想对其进行优化,使得正在search的列根据在C4中input的值而变化。
例如,如果C4中的值是1,我会得到13.86的值。 如果C4中的值是2,我会得到值10.看到这里 – 点击链接到示例数据
我尝试使用IF函数来调整上述数组公式,但没有成功。 我是一个总新手,所以要亲切:)
=IF(C4=1,(INDEX(A2:A1000,MATCH(FALSE,ISBLANK(A2:A1000)))),IF(C4=1,(INDEX(B2:B1000,MATCH(FALSE,ISBLANK(B2:B1000)))),0))
在D5中作为一个数组公式(用CSE),
=INDEX(A2:B1000, MATCH(FALSE, ISBLANK(INDEX(A2:B1000, 0, C4)),0), C4)
好的。 这将是令人望而生畏,但相信我,如果你仔细观察,这是一个非常简单的结合其他几个公式
在D4
或所需的单元格中input以下公式,然后按Ctrl + Shift + Enter
=INDEX(INDIRECT(SUBSTITUTE(ADDRESS(1,K4,4),"1","")&1&":"&SUBSTITUTE(ADDRESS(1,K4,4),"1","")&100),MATCH(FALSE,ISBLANK(INDIRECT(SUBSTITUTE(ADDRESS(1,K4,4),"1","")&1&":"&SUBSTITUTE(ADDRESS(1,K4,4),"1","")&100)),0))
这里K4
是我的input单元格(对于您的情况,这是C4
),我认为1:100
的范围不同于1:1000
。 所以相应地改变。
说明
-
ADDRESS
函数根据您input的内容返回一个地址文本。 对于input8,它会给H1
=INDEX(INDIRECT(SUBSTITUTE("H1","1","")&1&":"&SUBSTITUTE("H1","1","")&100),MATCH(FALSE,ISBLANK(INDIRECT(SUBSTITUTE("H1","1","")&1&":"&SUBSTITUTE("H1","1","")&100)),0))
-
SUBSTITUTE
function然后SUBSTITUTE
1,只给出输出H
,然后与INDIRECT
函数一起使用来获得范围。
=INDEX(INDIRECT("H"&1&":"&"H"&100),MATCH(FALSE,ISBLANK(INDIRECT("H"&1&":"&"H"&100)),0))
=INDEX(INDIRECT("H1:H100"),MATCH(FALSE,ISBLANK(INDIRECT("H1:H100")),0))
rest正是你的公式。