如何在一行中查找第2、3、N个正数?现有首正数公式待扩展
查找一行中第N个正数的Excel公式解决方案
原公式仅能定位一行中的第一个正数,要扩展到查找第2、3、…、N个正数,可通过以下两种方法实现:
兼容所有Excel版本的通用公式
适用于包括旧版Excel在内的所有版本,公式结构如下:
=INDEX($J$8:$S$8,SMALL(IF($J$8:$S$8>0,COLUMN($J$8:$S$8)-COLUMN($J$8)+1),k))
- 替换公式中的
k为目标序号(如2代表第二个正数,3代表第三个) - 旧版Excel需按
Ctrl+Shift+Enter确认数组公式,Excel 365/2021直接回车即可
公式原理
IF($J$8:$S$8>0,COLUMN($J$8:$S$8)-COLUMN($J$8)+1):筛选出所有正数对应的列偏移量(相对于J8的位置,从1开始计数),非正数返回逻辑值FALSESMALL(...,k):提取第k小的偏移量,即第k个正数所在的位置INDEX根据偏移量返回对应单元格的数值
Excel 365/2021 简化公式
利用动态数组函数FILTER可大幅简化公式:
=INDEX(FILTER($J$8:$S$8,$J$8:$S$8>0),k)
FILTER($J$8:$S$8,$J$8:$S$8>0)直接提取该行所有正数形成动态数组INDEX(...,k)取数组中的第k个元素,即为目标正数
示例验证
假设J8:S8的数据为:-5, 10, -3, 15, 0, 20
- 第一个正数:原公式返回
10 - 第二个正数:代入
k=2,两种公式均返回15 - 第三个正数:代入
k=3,两种公式均返回20
内容的提问来源于stack exchange,提问作者TDorman
相关产品推荐
相关产品推荐

