我做了一个公式来比较一个范围(M48-X48)中最后两个非空单元格的值,并根据这些值之间的差异给出一个输出(u,p或q)。但是,如果范围在最后两个值之间有一个空单元格,则该公式不再起作用,因为我只是从最后一个值的索引中减去1个单元格,而不是返回到最后一个非空单元格。如何将此功能添加到公式中?
=IF((INDEX(M48:X48;MATCH(9E+99+307;M48:X48))-INDEX(M48:X48;MATCH(9E+99+307;M48:X48)-1))=0;"u";IF(INDEX(M48:X48;MATCH(9E+99+307;M48:X48))-INDEX(M48:X48;MATCH(9E+99+307;M48:X48)-1)>0;"p";"q"))
现在的工作方式示例:
M: 1; N: 2; O: 3; rest until X is empty
Output = p
导致错误的示例raneg:
M: 1; N: empty; O: 3; rest until X is empty
答案 0 :(得分:0)
您是否只能在数据范围内进行查找和替换,空白?
您可以将IF语句丢弃到您的索引/匹配中,但是获得的时间越长,根据我的经验计算的时间越长,并且想知道它是否值得投入时间。你告诉我。
答案 1 :(得分:0)
使用AGGREGATE函数可以轻松提取最后一个非空值。
问题的解决方案如下
=IF(INDEX(M48:X48;AGGREGATE(14;6;COLUMN(M48:X48)/(M48:X48>0);1)-12)-INDEX(M48:X48;AGGREGATE(14;6;COLUMN(M48:X48)/(M48:X48>0);2)-12)=0;"u";IF(INDEX(M48:X48;AGGREGATE(14;6;COLUMN(M48:X48)/(M48:X48>0);1)-12)-INDEX(M48:X48;AGGREGATE(14;6;COLUMN(M48:X48)/(M48:X48>0);2)-12)>0;"p";"q"))
组件 AGGREGATE(14; 6; COLUMN(M48:X48)/(M48:X48> 0); 1)返回最后一个值的列号,而同一个组件带有2而不是最后的1,返回第二个最后一个值的列。使用INDEX(组件-12)返回相应单元的值。需要使用-12来计算列移位,因为范围仅从M开始。公式的其余部分与问题中的问题保持不变。