从索引指定的特定列中获取第一个非空值。 高强

这个数组公式允许我通过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 。 所以相应地改变。

说明

  1. 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))

  1. SUBSTITUTEfunction然后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正是你的公式。