excel中如何返回某一行中的特定数值所在的列数

空 A B C D E F G
1 啊 簌 我 人 饿 他
2 0 0 0 1 0 0
如何返回第二行第一个不为零所在列的第一行的值,即在g2返回“人”

    首先想到的是求第二行不等于0的最小列标,用=MIN((A2:F2<>0)*COLUMN(A2:F2)),且是数组公式,即同时按Shift+Ctrl+Enter结束公式编辑,会自动生成一对{},但是对于不符合的会返回时,取不到不等于0的最小列标;

    所以可以转换一下求最大值,用10来倒减最小列标,得到最大列标,这样就不会取到不符条件的列标,取出的最大值,再用10来减,即得到最小列标:=10-MAX((A2:F2<>0)*(10-COLUMN(A2:F2))),这也是数组公式,即同时按Shift+Ctrl+Enter结束公式编辑,会自动生成一对{};

    上面也是数组公式,可以用SUMPRODUCT函数来转一下,就成为普通公式,不需要三键齐按;

    再用INDEX函数返回第一行相应列的值即可达到目的:=INDEX(1:1,SUMPRODUCT(10-MAX((A2:F2<>0)*(10-COLUMN(A2:F2)))))。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-13
=INDEX(1:1,MIN(IF(2:2<>0,COLUMN(2:2))))
数组公式以ctrl+shift+enter三键组合结束输入

如果是要在G2输入公式的话改为
=INDEX(1:1,MIN(IF(A2:F2<>0,COLUMN(A2:F2))))
数组公式以ctrl+shift+enter三键组合结束输入

楼上的公式只适合查找最后一个不为0的数据对应的第1行值
第2个回答  2011-06-13
我想,你用100分来问这问题,不用是楼上的回答的这么简单吧。
也许你用到vba的可能性比较大,可以给我留言。我会处理的。
第3个回答  2011-06-13
假设要查找123在A1:D1中的列数

=match(123,a1:d1,)
第4个回答  2011-06-13
楼上多了个逗号。。。。

=match(123,a1:d1)本回答被提问者采纳