求Google Script实现:合并重复员工行,将Leave_Warnings合并至单个单元格
嘿,这个需求太常见啦!我给你几个不同工具的实现思路,你可以根据自己平时用的工具来选:
方法1:用Excel实现(适合非编程用户)
如果你的数据在Excel里,有两种简单的方式:
方式A:用TEXTJOIN + UNIQUE函数组合(Excel 365/2021及以上版本支持)
- 第一步:提取不重复的员工ID。在空白列(比如C列)的第一个单元格(C2)输入:
=UNIQUE(A:A),回车后会自动生成所有不重复的员工ID列表。 - 第二步:合并对应员工的请假警告。在D2单元格输入:
=TEXTJOIN(", ", TRUE, FILTER(B:B, A:A=C2)),回车后就能得到该员工所有的Leave_Warnings合并结果,然后下拉填充整列即可。- 解释:
TEXTJOIN负责把多个文本用指定分隔符(这里是,)拼接,FILTER用来筛选出当前员工ID对应的所有请假警告,TRUE参数表示忽略空值。
- 解释:
方式B:用Power Query(所有Excel版本基本都支持)
- 第一步:选中你的数据区域,点击「数据」选项卡 -> 「从表格/区域」(如果弹出对话框,勾选「我的表格有标题」)。
- 第二步:进入Power Query编辑器后,点击「转换」选项卡 -> 「分组依据」。
- 第三步:在分组设置窗口中:
- 「分组依据」选择「员工ID」;
- 「新列名」可以填「合并警告」;
- 「操作」选择「合并行」;
- 「列」选择「Leave_Warnings」;
- 点击「高级选项」,设置分隔符为
,;
- 第四步:点击「确定」,然后点击「主页」选项卡 -> 「关闭并上载」,合并后的结果就会导入到新的工作表里。
方法2:用Python pandas实现(适合编程用户)
如果习惯用代码处理,pandas是非常高效的选择:
import pandas as pd # 读取你的表格数据,假设是Excel文件,也可以是CSV df = pd.read_excel("你的请假记录文件.xlsx") # 按员工ID分组,将对应的Leave_Warnings用逗号加空格拼接 merged_df = df.groupby("员工ID", as_index=False)["Leave_Warnings"].agg(", ".join) # 保存合并后的结果到新文件 merged_df.to_excel("合并后的请假记录.xlsx", index=False)
解释:groupby按员工ID分组,agg(", ".join)把每组的Leave_Warnings拼接成一个字符串,as_index=False保证员工ID作为普通列而不是索引。
方法3:用SQL实现(如果数据存储在数据库中)
如果你的请假记录存在数据库里,可以用SQL的字符串聚合函数来实现,不同数据库写法略有差异:
- MySQL/MariaDB:
SELECT 员工ID, GROUP_CONCAT(Leave_Warnings SEPARATOR ', ') AS 合并警告 FROM 你的请假表名 GROUP BY 员工ID;
- SQL Server 2017+/Azure SQL:
SELECT 员工ID, STRING_AGG(Leave_Warnings, ', ') AS 合并警告 FROM 你的请假表名 GROUP BY 员工ID;
- PostgreSQL:
SELECT 员工ID, STRING_AGG(Leave_Warnings, ', ') AS 合并警告 FROM 你的请假表名 GROUP BY 员工ID;
这些方法应该能完美解决你的需求,要是你用的是其他工具(比如Google Sheets),可以告诉我,我再补充对应的思路~
内容的提问来源于stack exchange,提问作者Frost
相关产品推荐
相关产品推荐

