首先想到的是求第二行不等于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)))))。
=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行值
我想,你用100分来问这问题,不用是楼上的回答的这么简单吧。
也许你用到vba的可能性比较大,可以给我留言。我会处理的。
假设要查找123在A1:D1中的列数
=match(123,a1:d1,)
楼上多了个逗号。。。。
=match(123,a1:d1)