如何在单元格区域中找到最后一个非空单元格(兼顾行与列)
解决Google Sheets二维区域最后一个非空单元格取值问题
问题根源
你之前使用的公式 =INDEX(B2:H5,COUNTA(B2:B),COUNTA(B:H)) 无法满足需求,问题出在:
COUNTA(B2:B)仅统计B列(周一列)的非空行数,不能定位整个区域中最后一行有数据的位置COUNTA(B:H)统计的是B-H区域所有非空单元格的总数,而非最后一个非空单元格的列索引,导致INDEX无法正确匹配目标单元格
可行解决方案
方法1:FLATTEN + LOOKUP(最简实现)
直接将二维区域转为一维数组,匹配最后一个数值型非空值:
=LOOKUP(9^9,FLATTEN(B2:H5))
逻辑说明:
FLATTEN(B2:H5)把B2:H5的所有单元格按行优先顺序转成纵向一维数组LOOKUP(9^9, ...)用极大值匹配数组中最后一个数值型单元格(体重均为数值,完全适配)- 新增数据(同一行后续列/下一行任意列)时,公式会自动更新结果
方法2:INDEX + MAX + IF(精确行/列定位)
如果需要明确获取最后一个非空单元格的行、列位置,可使用数组公式:
=INDEX(B2:H5,MAX(IF(B2:H5<>"",ROW(B2:H5)-ROW(B2)+1)),MAX(IF(B2:H5<>"",COLUMN(B2:H5)-COLUMN(B2)+1)))
逻辑说明:
IF(B2:H5<>"",ROW(B2:H5)-ROW(B2)+1)遍历区域,为非空单元格返回其在B2:H5内的行索引(B2对应行1,B3对应行2)MAX(...)提取最大行索引,即最后一个非空单元格的区域行位置- 列部分同理,通过
COLUMN函数获取区域内列索引,取最大值得到目标列位置 - 最终INDEX通过行、列索引定位到目标值
效果验证
当前表格最后一个值为182.7,两个公式均会返回该值;在周四列新增数值后,J2会自动更新为新值;下周切换到下一行输入数据时,也能正确返回最新体重。
内容的提问来源于stack exchange,提问作者carpediem24
相关产品推荐
相关产品推荐

