Google Sheets:按指定部门转置已勾选表头至对应工作表
解决方案
核心公式(以“市场部”工作表为例)
假设Sheet1的表头在第1行(D1:Z1为需要筛选的勾选表头),部门列是C列,勾选标记为TRUE(若为"√"则替换公式中的TRUE),在目标部门工作表的A1单元格输入以下公式:
=TRANSPOSE(UNIQUE(FILTER(Sheet1!$D$1:$Z$1, MMULT(--(Sheet1!$C$2:$C$1000="市场部"), --(Sheet1!$D$2:$Z$1000=TRUE))>0)))
公式说明
--(Sheet1!$C$2:$C$1000="市场部"):将指定部门的行转换为1,其他行转换为0,生成一维数组--(Sheet1!$D$2:$Z$1000=TRUE):将已勾选的单元格转换为1,未勾选的转换为0,生成二维数组MMULT(...)>0:通过矩阵乘法计算每个表头列下,指定部门员工的勾选次数,大于0表示该表头有至少一名对应部门员工勾选FILTER:筛选出符合条件的表头UNIQUE:去除重复的表头项(避免同一表头被多名员工勾选后重复显示)TRANSPOSE:将横向表头转置为纵向列表,匹配Sheet1职位列(B:B)的展示格式
动态匹配部门名称(无需手动修改公式)
如果目标工作表的名称就是对应部门名,可使用以下公式自动获取当前工作表名称,适配所有部门工作表:
=TRANSPOSE(UNIQUE(FILTER(Sheet1!$D$1:$Z$1, MMULT(--(Sheet1!$C$2:$C$1000=MID(CELL("filename"),FIND("]",CELL("filename"))+1,99)), --(Sheet1!$D$2:$Z$1000=TRUE))>0)))
常见问题说明
之前使用Transpose(Filter(),Filter())失败的原因通常是嵌套Filter无法关联部门列与勾选状态的对应关系,改用MMULT可以实现跨维度的条件匹配,准确筛选出指定部门下已勾选的表头。
内容的提问来源于stack exchange,提问作者DrowsyByNature
相关产品推荐
相关产品推荐

