多列布尔值数组排序:仅保留每列顶部TRUE值
解决方法
你可以直接用FILTER函数筛选出每列中的TRUE值,替代原公式里的SORT,这样就能只保留TRUE而排除FALSE。
简化版公式(适用于Excel 365/Google Sheets)
利用BYCOL函数批量处理所有列,无需重复写11次公式:
=BYCOL(INDIRECT(B5), LAMBDA(col, FILTER(col, col=TRUE)))
BYCOL会遍历INDIRECT(B5)指向的区域的每一列LAMBDA(col, ...)定义对每一列的处理逻辑:用FILTER筛选出该列中等于TRUE的单元格
兼容旧版本的手动写法
如果你的Excel版本不支持BYCOL,可以对每一列单独写FILTER公式,再用大括号组合:
={FILTER(INDEX(INDIRECT(B5),0,1),INDEX(INDIRECT(B5),0,1)=TRUE), FILTER(INDEX(INDIRECT(B5),0,2),INDEX(INDIRECT(B5),0,2)=TRUE), FILTER(INDEX(INDIRECT(B5),0,3),INDEX(INDIRECT(B5),0,3)=TRUE), FILTER(INDEX(INDIRECT(B5),0,4),INDEX(INDIRECT(B5),0,4)=TRUE), FILTER(INDEX(INDIRECT(B5),0,5),INDEX(INDIRECT(B5),0,5)=TRUE), FILTER(INDEX(INDIRECT(B5),0,6),INDEX(INDIRECT(B5),0,6)=TRUE), FILTER(INDEX(INDIRECT(B5),0,7),INDEX(INDIRECT(B5),0,7)=TRUE), FILTER(INDEX(INDIRECT(B5),0,8),INDEX(INDIRECT(B5),0,8)=TRUE), FILTER(INDEX(INDIRECT(B5),0,9),INDEX(INDIRECT(B5),0,9)=TRUE), FILTER(INDEX(INDIRECT(B5),0,10),INDEX(INDIRECT(B5),0,10)=TRUE), FILTER(INDEX(INDIRECT(B5),0,11),INDEX(INDIRECT(B5),0,11)=TRUE)}
两种方法最终都会输出仅包含TRUE值的11列数据,每列的TRUE会自动连续排列在顶部,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Spency
相关产品推荐
相关产品推荐

