例题描述
在 Excel 中有包含四个字段的数据表,且各字段的数据内容不一。其中的 ID 字段为 {key}value 结构的数值,如下图所示:
现在需要分两步对数据进行如下整理。
1,按行将 ID 中 key 值分别为 S1,S6,S10 的 value 值取出来,然后拼到 TEAMS 字段后面;2,再将 NUM 的内容中连接符“*”替换为逗号,然后拼到 DETAILS 字段前面。具体的整理相关内容,以及整理后的期望结果如下图所示,其中红色部分为整理前后的相关数据:
实现步骤
使用 Excel 插件 SPL XLL
在空白单元格写入公式:
=spl("=E(?).run(replace(ID,[""{"",""}""],["""",""=""]):KV,TEAMS=TEAMS "";"" [""S1"",""S6"",""S10""].(KV.property@c(~)).concat("";""),DETAILS=""[NUM -"" replace(NUM,""*"","","") ""]."" DETAILS)",A1:D3)
如图:
简要说明:
去掉 ID 字段内容中的左括号,将右括号替换为 =,使得 KV 字段内容为标准的 Key=value 结构。
使用函数 property 从标准的 Key=value 串中获取到相应 key 的键值,然后拼接到 TEAMS 字段。完成数据整理要求的第 1 步。
替换 NUM 的分节符号后,拼到 DETAILS 前面。完成数据整理要求的第 2 步。