如何在单个Excel单元格中获取二维数组最后非空单元格的行索引?
解决Excel单单元格获取最后非空单元格行索引的问题
关于内联数组的判断
你的判断是对的,旧版Excel(非365/2021动态数组版本)不支持直接用{..;..}这种垂直内联数组写法嵌套公式,这种格式仅适用于常量数组,无法直接嵌套单元格公式或函数运算结果。
单单元格实现方案
方案一:兼容多数Excel版本(INDEX+AGGREGATE思路延伸)
利用INDEX提取每行非空单元格的列号,再结合MAX和MATCH定位目标行:
=MATCH(MAX(INDEX(MATCH(FALSE,ISBLANK($A1:$Z1),0),,)),INDEX(MATCH(FALSE,ISBLANK($A1:$Z5),0),,),0)
如果是分号作为参数分隔符的区域设置(如欧版Excel),替换逗号为分号:
=MATCH(MAX(INDEX(MATCH(FALSE;ISBLANK($A1:$Z1);0);;));INDEX(MATCH(FALSE;ISBLANK($A1:$Z5);0);;);0)
原理:
INDEX(MATCH(FALSE,ISBLANK($A1:$Z5),0),,)生成包含每行非空单元格列号的数组(例如{2,5,3,7,1})MAX提取数组中的最大值,即最后一个非空单元格的列号MATCH找到该最大值在数组中的位置,对应目标行索引
方案二:动态数组版本(Excel 365/2021专属)
支持动态数组的Excel版本无需额外包装,写法更简洁:
=MATCH(MAX(MATCH(FALSE,ISBLANK($A1:$Z5),0)),MATCH(FALSE,ISBLANK($A1:$Z5),0),0)
这里MATCH(FALSE,ISBLANK($A1:$Z5),0)会直接返回垂直数组,省去INDEX的包装步骤。
方案三:SUMPRODUCT直接定位
用SUMPRODUCT跳过嵌套MATCH的步骤,直接计算目标行号:
=SUMPRODUCT((MATCH(FALSE,ISBLANK($A1:$Z5),0)=MAX(MATCH(FALSE,ISBLANK($A1:$Z5),0)))*ROW($1:$5))
分号版本:
=SUMPRODUCT((MATCH(FALSE;ISBLANK($A1:$Z5);0)=MAX(MATCH(FALSE;ISBLANK($A1:$Z5);0)))*ROW($1:$5))
原理:匹配列号等于最大值的行,将对应行号相乘后求和,直接得到目标行索引。
内容的提问来源于stack exchange,提问作者Duret-Robert Louis
相关产品推荐
相关产品推荐

