You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel LET函数构建的表格中添加列并按角色/学科筛选

问题描述

我现有以下Excel公式,可筛选出T2单元格指定日期后可用的员工列表:

=LET(uniqueEmployees,UNIQUE(AllStaffProjectAllocationTbl[Employee]), maxDatePerEmployee,BYROW(uniqueEmployees,LAMBDA(e,MAX(FILTER(AllStaffProjectAllocationTbl[End Date],AllStaffProjectAllocationTbl[Employee]=e)))), EmployeesWithMaxDate,CHOOSE({1,2},uniqueEmployees,maxDatePerEmployee), FILTER(EmployeesWithMaxDate,maxDatePerEmployee<=T2))

想请教两个问题:

  1. 能否在结果表格中加入**Role(职位)和Discipline(学科)**列?
  2. 能否给新生成的表格设置按学科或职位筛选的功能?

源数据表AllStaffProjectAllocationTbl内容如下:

EmployeeRoleDisciplineProject NameStart DateStart YearEnd Date
BobSenior ProgrammerProgrammingProject 101/01/2020202028/02/2020
BobSenior ProgrammerProgrammingProject 201/03/2020202031/03/2020
BobSenior ProgrammerProgrammingProject 301/04/2020202030/06/2020
DaveMid Level ProgrammerProgrammingProject 101/02/2020202028/02/2020
DaveMid Level ProgrammerProgrammingProject 301/03/2020202031/07/2020
PeterSenior ProgrammerProgrammingProject 101/01/2020202031/01/2020
PeterSenior ProgrammerProgrammingProject 201/04/2020202031/05/2020
PeterSenior ProgrammerProgrammingProject 301/06/2020202030/06/2020
JackJunior ProgrammerProgrammingProject 101/02/2020202030/06/2020
RichardSenior ArtistArtProject 101/03/2020202030/04/2020
RichardSenior ArtistArtProject 201/05/2020202030/09/2020
RodneyLead QAQAProject 101/03/2020202030/06/2020
ChrisSenior ProducerProductionProject 101/01/2020202030/08/2020
RogerQAQAProject 101/01/2020202030/04/2020
RogerQAQAProject 201/05/2020202031/05/2020
RogerQAQAProject 301/06/2020202030/06/2020
WesleyMid Level ProgrammerProgrammingProject 101/02/2020202031/05/2020
WesleyMid Level ProgrammerProgrammingProject 201/06/2020202031/07/2020
解决方案

一、修改公式加入Role和Discipline列

可以直接扩展原有LET函数的逻辑,提取每个员工对应的职位和学科,确保与最晚项目结束日期匹配。修改后的公式如下:

=LET(
    uniqueEmployees, UNIQUE(AllStaffProjectAllocationTbl[Employee]),
    // 获取每个员工的最晚项目结束日期
    maxEndDate, BYROW(uniqueEmployees, LAMBDA(e, MAX(FILTER(AllStaffProjectAllocationTbl[End Date], AllStaffProjectAllocationTbl[Employee]=e)))),
    // 获取每个员工对应的职位(假设同员工职位固定,取第一条匹配记录)
    employeeRoles, BYROW(uniqueEmployees, LAMBDA(e, INDEX(FILTER(AllStaffProjectAllocationTbl[Role], AllStaffProjectAllocationTbl[Employee]=e), 1))),
    // 获取每个员工对应的学科
    employeeDisciplines, BYROW(uniqueEmployees, LAMBDA(e, INDEX(FILTER(AllStaffProjectAllocationTbl[Discipline], AllStaffProjectAllocationTbl[Employee]=e), 1))),
    // 组合员工姓名、职位、学科、最晚结束日期四列
    employeeData, CHOOSE({1,2,3,4}, uniqueEmployees, employeeRoles, employeeDisciplines, maxEndDate),
    // 筛选出最晚结束日期<=T2的员工,无结果时显示提示文本
    FILTER(employeeData, maxEndDate<=T2, "无可用员工")
)

注意:

如果存在员工职位/学科变更的情况,可将INDEX(...,1)替换为匹配最晚项目对应的职位/学科(比如结合MAX(End Date)筛选对应行的字段)。

二、给结果表格添加筛选功能

有两种简单实现方式:

方法1:转换为结构化表格

  1. 给公式输出的结果手动添加表头:员工、职位、学科、最晚结束日期。
  2. 选中整个结果区域(包括表头),点击菜单栏**「插入」→「表格」**,勾选「我的表格有标题」并确认。
  3. 生成的表格每列标题旁会自动出现筛选按钮,直接点击即可按职位、学科筛选。

方法2:手动添加筛选

  1. 选中结果区域的表头行。
  2. 点击菜单栏**「数据」→「筛选」**,表头列会生成筛选按钮,后续操作与表格筛选一致。

内容的提问来源于stack exchange,提问作者Automation Monkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:57:29