excel中如何“返回某一行中第一个非零非空的数值”

如题所述

解此题的关键是首先要找到该行第一个非零非空数值的列标号。具体方法如下(以第一行为例):
1、用LOOKUP函数配合一个数组来解决:先建立一个数组0/(1:1<>0),利用除数不能为零的性质将非零非空的数值在数组中以0值的形式表示出来(其他为空为零的数值则显示为错误符号),再用LOOKUP函数将实际数值返回。公式为=LOOKUP(0,0/(1:1<>0),1:1)
2、用INDEX函数和MATCH函数组合解决:先用MATCH函数定位到第一个非零非空的数值的列号,再通过INDEX函数返回该数值。公式为=INDEX(1:1,MATCH(TRUE,1:1<>0,)) 该公式需要按组合键Ctrl+Shift+enter结束。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-23
假设返回第一行 第一个非零非空的值
=INDEX($1:$1,1,MIN(IF(($1:$1<>0)*($1:$1<>"")*COLUMN($1:$1),($1:$1<>0)*($1:$1<>"")*COLUMN($1:$1),10^10)))
CTRL SHIFT 回车结束
如果是其他的行
就把 $号后面的 1改为实际行号追问

B C D E F G H I
392 6,184,480,000 9,775,720,000 6,184,480,000 0 0 0 0 0
=INDEX(B392:I392,1,MIN(IF((B392:I3920)*(B392:I392"")*COLUMN(B392:I392),(B392:I3920)*(B392:I392"")*COLUMN(B392:I392),10^10)))

得出结果是:false

追答

你这个范围从第二列开始
公式修改为
=INDEX(B392:I392,1,MIN(IF((B392:I3920)*(B392:I392"")*COLUMN(B392:I392),(B392:I3920)*(B392:I392"")*COLUMN(B392:I392),10^10))-1)

本回答被提问者采纳
第2个回答  2011-09-23
假设查找A列中第一个非空的单元格的数值
=INDIRECT("A"&MATCH(1,N(LEN(A:A)<>0),0))
按CTRL+SHIFT+回车 结束公式输入
相似回答