Excel中用FILTER函数筛选球员最近指定场次比赛数据的问题
Excel筛选NBA球员最近N场比赛数据解决方案
核心逻辑
要获取最近场次而非最早场次,必须先对目标球员的所有比赛按日期降序排序,再截取前N条记录。需结合FILTER(筛选)、SORTBY(排序)、TAKE(截取)三个函数实现。
基础场景:仅按球员+指定场次筛选
假设原始数据存于Data工作表:
- E列 = 球员姓名
- A列 = 比赛日期(需为Excel可识别的日期格式)
- Z列 = 得分
- PROPS工作表A2 = 选中球员,B2 = 指定场次(如3/5/10/20)
在PROPS工作表B3单元格输入以下公式(自动溢出填充):
=TAKE(SORTBY(FILTER(Data!A:Z, Data!E:E=PROPS!A2), Data!A:A, -1), PROPS!B2, {1,5,26})
公式拆解:
FILTER(Data!A:Z, Data!E:E=PROPS!A2):筛选出目标球员的所有比赛数据SORTBY(..., Data!A:A, -1):按比赛日期降序排序(-1代表倒序,最新比赛排首位)TAKE(..., PROPS!B2, {1,5,26}):截取前B2行,仅保留指定列(示例中1=日期、5=球员、26=得分,可根据实际列号调整)
若仅需提取得分:
=TAKE(SORTBY(FILTER(Data!Z:Z, Data!E:E=PROPS!A2), Data!A:A, -1), PROPS!B2)
进阶场景:结合主客场/对手筛选
1. 筛选最近N场主场比赛
假设H列为主客场标识(如"主"/"客"),添加主客场筛选条件:
=TAKE(SORTBY(FILTER(Data!A:Z, (Data!E:E=PROPS!A2)*(Data!H:H="主")), Data!A:A, -1), PROPS!B2, {1,8,26})
*(Data!H:H="主")实现多条件逻辑:球员匹配 且 为主场
2. 筛选最近N场对阵指定对手的比赛
假设I列为对手球队,PROPS工作表C2为即将交手的对手名称:
=TAKE(SORTBY(FILTER(Data!A:Z, (Data!E:E=PROPS!A2)*(Data!I:I=PROPS!C2)), Data!A:A, -1), PROPS!B2, {1,9,26})
*(Data!I:I=PROPS!C2)实现:球员匹配 且 对手匹配
PROPS工作表B3:E12区域适配
若需固定在B3:E12展示(不足场次时留空),用IFERROR避免错误提示:
=IFERROR(TAKE(SORTBY(FILTER(Data!A:Z, Data!E:E=PROPS!A2), Data!A:A, -1), PROPS!B2, {1,8,9,26}), "")
示例中{1,8,9,26}对应日期、主客场、对手、得分,需根据你的实际列号调整,确保与B3:E12的列对应。
注意事项
- 确保日期列是Excel可识别的日期格式(非文本),否则排序会失效
- 若存在同日期多场比赛,可添加第二排序条件(如比赛时间列)确保顺序准确
- 动态数组公式仅需在B3输入,自动填充至下方和右侧,无需手动下拉/右拉
内容的提问来源于stack exchange,提问作者Eddie Chinea
相关产品推荐
相关产品推荐

