如何基于可变列引用实现Excel跨表Filter函数筛选?
解决基于可变列的FILTER筛选问题
你的问题根源在于:之前生成的是文本格式的单元格地址字符串,但FILTER函数的条件参数需要的是实际的单元格区域引用,而非文本,因此触发了"范围不匹配"错误。
正确公式(推荐用INDEX,非易失性更稳定)
=FILTER(Attendance!$A$2:$S$25,INDEX(Attendance!$A$2:$S$25,,MATCH($B$1,Attendance!$A$1:$S$1,0))="In")
公式拆解
MATCH($B$1,Attendance!$A$1:$S$1,0):定位$B$1中的表头在Attendance表首行的列序号INDEX(Attendance!$A$2:$S$25,,<列序号>):通过列序号提取Attendance表中对应的数据列(两个逗号留空表示取该列所有行)- 以
提取的列="In"作为筛选条件,FILTER会返回Attendance表中符合条件的整行数据
备选方法(用OFFSET)
如果习惯用OFFSET,也可以用以下公式:
=FILTER(Attendance!$A$2:$S$25,OFFSET(Attendance!$A$2,,MATCH($B$1,Attendance!$A$1:$S$1,0)-1,24,1)="In")
OFFSET(Attendance!$A$2,,<列偏移量>,24,1):从A2单元格开始,偏移对应列数(因为A是第1列,所以MATCH结果减1),取24行(25-2+1)1列的区域,作为筛选条件列
注意:INDIRECT函数可以将文本地址转为区域,但它是易失性函数,会增加计算负担,不推荐使用。
内容的提问来源于stack exchange,提问作者Jenna Chapman
相关产品推荐
相关产品推荐

