1

我有员工及其合同类型的电子表格,格式如下

姓名 合同类型
员工1 永恒的
员工2 合同
员工3 实习生
员工4 永恒的
员工5 永恒的
员工6 国际米兰
员工7 合同

依此类推,直到 EmployeeN

我必须计算员工人数,并创建每种类型的员工姓名的 CSV 列表,例如

类型 数数 名称
永恒的 4 员工 1、员工 4、员工 5、员工 14
合同 3 员工 2、员工 7、员工 21
实习生 2 员工 3、员工 6

这需要自动更新,所以如果Employee2的合同类型改为Permanent,Contract行的count变为2,Permanent行的count变为5,name列表更新

我曾经COUNTIFS统计过每种员工类型的人数,但无法更新姓名列表

我尝试使用创建一系列名称,VLOOKUP但它只返回一个值,我需要多个值才能使用该CONCATENATE方法

4

3 回答 3

3

如果您使用的是 Excel 365,则可以使用该功能TextjoinFilter

=Textjoin(",",TRUE, Filter([Name Column], [Contract Column] = [Contract Cell]))

这将根据合同列与合同单元格引用相同的位置组合名称并用逗号分隔名称。将 [ ] 中的变量替换为单元格引用,确保正确锁定它们。

如果您通过点击CTRL+使用表格格式,T您可以命名引用,以便表格扩展或更改时它仍然会引用正确的范围。

使用Unique您还可以获得所有合同类型的列表,以防它们被添加。

于 2021-10-20T20:56:55.190 回答
1

您正在寻找 =TEXTJOIN。

=TEXTJOIN(Delimiter,TRUE,IF(ConditionRange=Condition,Range,""))

在您的情况下,“分隔符”将是“,”。ConditionRange 将是您的数据中包含“永久”、“合同”或“实习生”的范围。条件是当前行的类型,范围是数据中包含员工姓名的单元格范围。

于 2021-10-20T20:54:44.853 回答
1

我提出了一个基于 VBA 的解决方案,它带有 UserDefinedFnction MyConCat()。如果您被允许使用 VBA,请查看MyConCat的这篇较早的帖子

该函数的使用类似于 Google-Sheet 的“加入”,例如:=myConCat("/",b3:b5) 或:[=myConCat(",", if(employees!B2:B20=A2, employees!A2A20, "") )]

[]中的公式是一个数组,所以编辑然后按“ctrl+shft+Enter”而不是简单的输入...

同样,如果公司政策禁止 VBA 并且 Excel 没有 TextJoin(),那么请考虑使用 Google-Sheets。

于 2021-10-20T21:47:14.690 回答