Excel函数查找行中最后一个非空值的第n个

Excel函数查找行中最后一个非空值的第n个,excel,excel-formula,Excel,Excel Formula,我有一张写满血压(BP)数据的表格,按月份排列 我感兴趣的是在每个患者的范围内存储最后三个BP值,每个值都指定了一行。请注意,有些月份没有BP读数,因此数据集中有空格 血压范围为BB:BL 我能够找到上一次的公式: =LOOKUP(2,1/(ISNUMBER(BB3:BL3)),BB3:BL3) 倒数第二: =LOOKUP(9.99E+307,BB3:INDEX(BB3:BL3,MATCH(9.99E+307,BB3:BL3)-1)) 但我无法修改上述公式,以找到第三个到最后一个非空白BP值

我有一张写满血压(BP)数据的表格,按月份排列

我感兴趣的是在每个患者的范围内存储最后三个BP值,每个值都指定了一行。请注意,有些月份没有BP读数,因此数据集中有空格

血压范围为
BB:BL

我能够找到上一次的公式:

=LOOKUP(2,1/(ISNUMBER(BB3:BL3)),BB3:BL3)
倒数第二:

=LOOKUP(9.99E+307,BB3:INDEX(BB3:BL3,MATCH(9.99E+307,BB3:BL3)-1))
但我无法修改上述公式,以找到第三个到最后一个非空白BP值


任何建议都将不胜感激

要查找倒数第三个非空值,请尝试使用INDEX+AGGREGATE函数

1] 对于垂直放置的数据范围

C2
中,输入公式:

=INDEX(A1:A100,AGGREGATE(14,6,ROW(A1:A100)/(A1:A100<>""),3))
=INDEX(1:1,AGGREGATE(14,6,COLUMN(1:1)/(1:1<>""),3))

2.a]如果数据范围放置在指定位置,例如BB3:BH3

B3
formula:>>

=INDEX(BB3:BH3,AGGREGATE(14,6,COLUMN(BB3:BH3)-COLUMN(BA3)/(BB3:BH3<>""),3))
=索引(BB3:BH3,聚合(14,6,列(BB3:BH3)-列(BA3)/(BB3:BH3“”),3))
备注:列号必须调整为
列(BB3:BH3)-列(BA3)
变为{1,2,3,4,5..}


要查找倒数第三个非空值,请尝试使用索引+聚合函数

1] 对于垂直放置的数据范围

C2
中,输入公式:

=INDEX(A1:A100,AGGREGATE(14,6,ROW(A1:A100)/(A1:A100<>""),3))
=INDEX(1:1,AGGREGATE(14,6,COLUMN(1:1)/(1:1<>""),3))

2.a]如果数据范围放置在指定位置,例如BB3:BH3

B3
formula:>>

=INDEX(BB3:BH3,AGGREGATE(14,6,COLUMN(BB3:BH3)-COLUMN(BA3)/(BB3:BH3<>""),3))
=索引(BB3:BH3,聚合(14,6,列(BB3:BH3)-列(BA3)/(BB3:BH3“”),3))
备注:列号必须调整为
列(BB3:BH3)-列(BA3)
变为{1,2,3,4,5..}


如果有动态数组公式过滤器,则:

=INDEX(FILTER(1:1,1:1<>""),COUNTA(FILTER(1:1,1:1<>""))-2)
=索引(过滤器(1:1,1:1“”),计数(过滤器(1:1,1:1“”)-2)

如果有动态数组公式过滤器,则:

=INDEX(FILTER(1:1,1:1<>""),COUNTA(FILTER(1:1,1:1<>""))-2)
=索引(过滤器(1:1,1:1“”),计数(过滤器(1:1,1:1“”)-2)

谢谢@bosco_yip,我认为这是有道理的。但是,不是查看整行,而是查看感兴趣的范围,并返回同一行中倒数第三个值吗=指数(BB3:BH3,聚合(14,6,列(BB3:BH3)/(BB3:BH3“”),3))上述公式不起作用,但我们是否可以进行任何修改?为了便于组织,可以方便地存储在同一行中,但如果不可能,则无需担心。我欣赏你的洞察力!谢谢@bosco_yip,我认为这是有道理的。但是,不是查看整行,而是查看感兴趣的范围,并返回同一行中倒数第三个值吗=指数(BB3:BH3,聚合(14,6,列(BB3:BH3)/(BB3:BH3“”),3))上述公式不起作用,但我们是否可以进行任何修改?为了便于组织,可以方便地存储在同一行中,但如果不可能,则无需担心。我欣赏你的洞察力!