我的工作是基于您工作表中的 B 列 (last_name) 包含您的合并数据 (employee_ID last_name, first_name)。
您可以使用三个公式来做到这一点,使用regexreplace 和regexextract。
员工 ID
把它放在单元格 A1 中:
=arrayformula({"employee_ID";iferror(if($B2:$B="","",value(regexextract($B2:$B,"^.*\d"))),"")})
名字
把它放在单元格 C1 中:
=arrayformula({"first_name";if($B2:$B="","",regexreplace($B2:$B,"^.*\,\ ",""))})
姓氏
我在部门前面创建了一个新列 D。这进入单元格 D1:
=arrayformula({"last_name";if($B2:$B="","",regexreplace(regexreplace($B2:$B,".*\d\ ",""),"\,.*",""))})
总结
每个都有一个使用{} 的数组。数组的第一部分是"" 中的列标题,如"employee_ID"。这样您就可以将公式保留在第 1 行,以防您想在数据集上添加过滤器视图。然后 ; 是一个返回,然后是下面的其余单元格:iferror(if($B2:$B="","",value(regexextract($B2:$B,"^.*\d"))),"")。
regexextract($B2:$B,"^.*\d") 在开头 ^.* 查找任何内容,然后是数字 \d。
value() 将结果转换为数字。 iferror 处理找不到数字的地方。
在 first_name 上,以 ^.* 开头的任何内容,后跟逗号 \,,然后将空格 \ 替换为 ""(即删除)。
在 last_name 上,.*\d\ 替换任何 .* 后跟一个数字 \d 后跟一个空格 \ 没有 ""(即删除),然后从该结果中另一个替换删除逗号 @987654345 @ 后跟任何 .*。
一个单元格中的公式
如果您想一次性进行拆分,例如新列 F、G 和 H,请将其放入单元格 F1:
=arrayformula(iferror(trim(split({"employee_ID,last_name,first_name";if($B2:$B="","",value(regexextract($B2:$B,"^.*\d"))&", "&regexreplace($B2:B,"^.*\d\ ",""))},",")),""))
但是,employee_ID 会被格式化为文本。