我想按部门统计工作时间少于 50% 的员工数量。员工可以通过数字来识别。一个员工可以在一个部门内从事不同的工作,该部门由 3 乘以 20% 组成。因此,我必须先将每个员工的总工作时间加起来,然后计算出有多少员工的工作时间是 50% 或更少。由于有数千个,我想使用每个部门的公式来执行此操作。我可以使用 sum if 和 count if 来做到这一点,但每个员工需要一个公式。是否可以用每个部门一个公式来做到这一点?任何帮助都非常感谢。 模型表 使用总计和计数来计算每个员工的总数 如果可能的话,首选解决方案
员工编号 | 部门 | 职位描述 | 全日制 |
---|---|---|---|
1 | 内政 | 研究 | 20% |
1 | 内政 | 行政 | 20% |
1 | 人力资源 | 管理 | 30% |
2 | 人力资源 | 行政 | 80% |
3 | 外部事务 | 研究 | 100% |
4 | 内政 | 管理 | 50% |
5 | 人力资源 | 行政 | 30% |
5 | 人力资源 | 招聘 | 40% |
6 | 外部事务 | 管理 | 100% |
模型表
答案1
有很多方法可以解决这个问题,但就可读性而言,也许可以使用 GROUPBY()
或PIVOTBY()
=GROUPBY(B2:B10,N(D2:D10<0.5),SUM,,0)
Excel
或者,如果目前还无法使用上面提到的功能,MS365
那么可以使用以下命令:
=LET(
_data, A2:D10,
_department, INDEX(_data,,2),
_uniq, UNIQUE(_department),
_counts, BYROW(_uniq,LAMBDA(b, SUM(--(b=_department)*(TAKE(_data,,-1)<0.5)))),
VSTACK({"Department","Counts"},HSTACK(_uniq,_counts)))
或者,使用MMULT()
=LET(
_dept, B2:B10,
_fte, D2:D10<0.5,
UNIQUE(HSTACK(_dept,MMULT(N(_dept=TOROW(_dept)),--_fte))))
或者,使用COUNTIFS()
=LET(
_dept, B2:B10,
UNIQUE(HSTACK(_dept, COUNTIFS(_dept,_dept,D2:D10,"<.5"))))
正如你所见,有很多方法可以解决这个问题,但就灵活性,我会POWER QUERY
在这里使用毫不费力地实现自动化从而节省时间和精力. Power Query
,有Windows Excel 2010+
和Excel 365 (Windows or Mac)
. 观看演示以供参考。
要使用 Power Query,请按照以下步骤操作:
- 首先将源范围转换为表格并进行相应命名,在此示例中,我将其命名为
Table1
- Data接下来,从Tab --> Get & Transform Data--> Get Data--> From Other Sources-->打开一个空白查询Blank Query
- 上面的命令可以Power Query打开窗口,现在从HomeTab --> Advanced Editor--> 删除您看到的任何内容并粘贴以下内容M-Code,然后按Done
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Filtered Rows" = Table.SelectRows(Source, each [FTE] < 0.5),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"Department"}, {{"Count", each Table.RowCount(_), Int64.Type}})
in
#"Grouped Rows"
- 最后,将其导回Excel--> 单击Close & Load或Close & Load To--> 第一个单击的将创建一个New Sheet具有所需输出的,而后者将提示一个窗口询问您将结果放在何处。