Excel公式:从具有多个条件的数组返回值

时间:2018-01-29 10:45:18

标签: excel excel-formula

假设以下系列: enter image description here

我正在尝试找到最新1之前的最新非1值。

在这种情况下,它应该返回3而不是4。

1是我尝试使用MATCH(MIN(range),range,0)的最小值,并添加1以获取我需要的值,但最小函数会在第一次出现的最小值时停滞。

2 个答案:

答案 0 :(得分:1)

尝试

RDD

=INDEX(B1:P1,1,MATCH(1,(OFFSET(B1:P1,,-1)=1)*(B1:P1>1),0)) 是您的数据范围。当然它是一个数组公式(SHIFT + ENTER)。

希望有所帮助。

答案 1 :(得分:0)

我无法看到一个简短而敏捷的答案,但这里有一个建议,假设数据从A列开始

=INDEX(2:2,AGGREGATE(15,6,COLUMN(INDEX(2:2,MATCH(1,2:2,0)):INDEX(2:2,MATCH(999,2:2)))/(INDEX(2:2,MATCH(1,2:2,0)):INDEX(2:2,MATCH(999,2:2))>1),1))

如果范围没有在A列中开始,则必须从AGGREGATE返回的列号中减去该范围的第一列之前的列数,以获得相对于该值的正确索引值数组的开始,例如对于B2:Z2

=INDEX(B2:Z2,AGGREGATE(15,6,COLUMN(INDEX(B2:Z2,MATCH(1,B2:Z2,0)):INDEX(B2:Z2,MATCH(999,B2:Z2)))/(INDEX(B2:Z2,MATCH(1,B2:Z2,0)):INDEX(B2:Z2,MATCH(999,B2:Z2))>1),1)-COLUMN(A:A))

老实说,除非范围内的单元格数量非常大,否则使用MATCH查找范围中的最后一个数字是不值得的,因此B2:Z2的公式只是

=INDEX(B2:Z2,AGGREGATE(15,6,COLUMN(INDEX(B2:Z2,MATCH(1,B2:Z2,0)):Z2)/(INDEX(B2:Z2,MATCH(1,B2:Z2,0)):Z2>1),1)-COLUMN(A:A))

公式起始栏A

enter image description here

从B栏开始的公式

enter image description here