我有一张工作表,其中部门位于顶部 (H43),并且我使用排序、唯一和筛选嵌套公式从命名表中提取 3 列。过滤器查看该部门并提供所有 ID、员工姓名和头衔。我需要的附加列也在该表中,但不在相邻列“状态”中。我需要的列的列号依次为 7、8、9、5。
我想尽量减少拖动公式的维护,所以我希望有两件事之一:我可以使用溢出公式来拉动额外的非相邻列,或者进行多条件查找(因为这里有重复的 ID)引入就业状态并使其在泄漏时自动填充。
_Pop 标头是,目前我正在拉最后 3 个,但想要员工状态。最后 3 列正在从第一组列中提取数据,但状态很好,所以我不想移动它,或不必要地重复它。
部门 | 员工 | 身份证号(姓名) | 办公室 | 员工状况 | 全职工作时间 | 员工ID | 姓名 | 标题 |
---|
我尝试过的公式:
溢出:
此公式可以很好地提取最后 3 列,但不能提取附加状态列
=SORT( UNIQUE( FILTER( _Pop[[EmployeeID]:[Title]], _Pop[department]='Annualized Hours (2)'!$H$43)),2,1)
这个公式给出了奇怪的行为
=SORT( UNIQUE( FILTER( _Pop, _Pop[department]='Annualized Hours (2)'!$H$43),{7,8,9,5}),2,1)
这次尝试给出了#Value!错误。
=SORT(UNIQUE(FILTER(INDEX(_Pop, , {7,8,9,5}), _Pop[department]='Annualized Hours (2)'!$H$43)),2,1)
=SORT(UNIQUE(FILTER(INDEX(_Pop[#Data], , {7,8,9,5}), _Pop[department]='Annualized Hours (2)'!$H$43)),2,1)
这给出了列,但不是按照我需要的顺序:
=SORT(UNIQUE(FILTER(FILTER(_Pop, _Pop[department]='Annualized Hours (2)'!$H$43), (COLUMN(_Pop)=COLUMN(INDEX(_Pop,,7)))+(COLUMN(_Pop)=COLUMN(INDEX(_Pop,,8)))+(COLUMN(_Pop)=COLUMN(INDEX(_Pop,,9)))+(COLUMN(_Pop)=COLUMN(INDEX(_Pop,,5)))),FALSE,FALSE),3,1,FALSE)
在 A1:D1 中创建助手,以防它不喜欢这些常量。没有运气
=INDEX(_Pop,MATCH('Annualized Hours (2)'!$H$43,_Pop[department],0),MATCH(COLUMN(A1:D1),COLUMN(INDEX(_Pop,,{7,8,9,5})),0))
查找:
=XLOOKUP(INDEX(I44#,,1), MATCH(TRUE,($H$43=_Pop[department])*(INDEX(I44#,,1)=_Pop[EmployeeID]),0),_Pop[Employee Status],0,0)
正如评论的,你可以使用:
=FILTER(CHOOSECOLS(_Pop,7,8,9,5),_Pop[Department]=$H$43)
或者添加 SORT 和 UNIQUE (就像 Kevin 评论的那样):(
=SORT(UNIQUE(FILTER(CHOOSECOLS(_Pop,7,8,9,5),_Pop[Department]=$H$43)),2)
其中2
CHOOSECOLS 结果的索引列)我最终寻找的答案是使用 CHOOSE 函数。
=SORT(CHOOSE({1,2,3,4}, FILTER(INDEX(_Pop,,7), _Pop[department]='Annualized Hours (2)'!$H$43), FILTER(INDEX(_Pop,,8), _Pop[department]='Annualized Hours (2)'!$H$43),FILTER(INDEX(_Pop,,9), _Pop[department]='Annualized Hours (2)'!$H$43), FILTER(INDEX(_Pop,,5), _Pop[department]='Annualized Hours (2)'!$H$43)),2,1)