Excel求公式,如何自动提取一行中"单价"所对应的最后非0数值

=LOOKUP(1,1/(A1:AD1="单价"),A2:AD2) 这个公式能做到单价对应下的最后数值,但不能非0;
=LOOKUP(1,0/(A2:AD2<>0),A2:AD2) 这个公式能做到最后非0数值,但不是单价对应下;
不知道这两怎么组合在一起

=LOOKUP(1,1/ISNUMBER(C1:C100),C1:C100)
这个公式的作用是在C1到C100的范围中找到最后一个非零数值。ISNUMBER函数用于判断单元格中的值是否为数字,然后将这些结果进行除法运算,得到一个由真假值组成的数组。LOOKUP函数在真假值数组中查找1的位置,返回该位置对应的值,即最后一个非零数值。
请注意,这个公式假设"单价"所在的范围是C1到C100,如果实际范围不同,需要相应地调整公式中的单元格范围追问

放入这个公式没有通,
=LOOKUP(1,1/(A1:AD1="单价"),A2:AD2) 这个公式能做到单价对应下的最右边数值,但不能非0;=LOOKUP(1,0/(A2:AD20),A2:AD2) 这个公式能做到最右边非0数值,但不是单价对应下;不知道这两怎么组合在一起,估计就通了

追答

可能的解决方案是通过以下数组公式:

{=LOOKUP(2^Lookup_array,0/(Lookup_array=Value_array)*Power(10,Row_array-1),Result_array.(Row_array-1))}

在这个公式中:

    Lookup_array 是包含所有可能查找值的数组。

    Value_array 是你要查找的值(例如,“单价”)。

    Row_array 是一个包含每一列的行号的数组。

    Result_array 是一个包含你希望返回结果的数组。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-09-23
=LOOKUP(2,1/(A1:AD1="单价")*(A2:AD2<>0),A2:AD2)
这个公式首先会查找包含"单价"的单元格,然后通过乘以(A2:AD2<>0)来确保提取的值是非零的。这将返回"单价"对应的最后一个非零数值。本回答被提问者采纳
第2个回答  2023-09-24
=INDEX(2:2,SMALL(IF(($A$1:$AD$1="单价")*($A$2:$AD$2<>0),COLUMN($A$1:$AD$1),256),SUMPRODUCT(($A$1:$AD$1="单价")*($A$2:$AD$2<>0))))
数组公式,同时按CTRL SHIFT 回车键
相似回答
大家正在搜