Google sheets 将包含分隔符的单行中的多列数据转换为多行并展平分隔符,以便每个单元格中只有一项
我希望使用数组公式进行拆分和展平,并保留正确的对应参考号,分配给多行展平数据Google sheets 将包含分隔符的单行中的多列数据转换为多行并展平分隔符,以便每个单元格中只有一项,google-sheets,split,google-sheets-formula,array-formulas,flatten,Google Sheets,Split,Google Sheets Formula,Array Formulas,Flatten,我希望使用数组公式进行拆分和展平,并保留正确的对应参考号,分配给多行展平数据 A列:参考号 B列:ID(CSV) C列:临时ID(CSV) 当前格式 | A | B | C | |111|001 002 | | |222|004 005 006 008| | |333|007 |T001 T006 T002| |888| |T005
- A列:参考号
- B列:ID(CSV)
- C列:临时ID(CSV)
| A | B | C |
|111|001 002 | |
|222|004 005 006 008| |
|333|007 |T001 T006 T002|
|888| |T005 T004 T008|
|444| |T007 |
预期结果
| A | B | C |
|111|001| |
|111|006| |
|222|004| |
|222|005| |
|222|006| |
|222|008| |
|333|007| |
|333| |T001|
|333| |T006|
|333| |T002|
|888| |T005|
|888| |T004|
|888| |T008|
|444| |T007|
是另一个职位,这是类似的,我期待完成。
(唯一的区别是在这篇文章中,OP只有两列。)
以下是我正在使用的公式(工作不完美):
=ARRAYFORMULA(TRIM(QUERY(SPLIT(FLATTEN(IF(IFERROR(SPLIT('Form Responses'!C2:D, " "))="",,
'Form Responses'!B2:B&"×"&SPLIT('Form Responses'!C2:D, " "))), "×"), "where Col2 is not null")))
我做错了什么
这是我的工作表。请使用:
=数组公式(
regexreplace(
文本(
拆分(
查询(
扁平化(iferror('Form Responses'!B2:B&“µ”和iferror(split('Form Responses'!C2:C,”))和“µ”和iferror(split('Form Responses'!D2:D,”),
“其中Col1不为null,且不是以‘µ’结尾的Col1”,
0
),
“µ”,假,假
),
"000"
),
"000", ""
)
)
请注意,此公式将生成如下所示的行:
参考文献
#身份证
临时ID
333
007
T001
非常感谢@doublemonary你的公式比我的好,但还是有一个小问题。我本来应该好好沟通的<代码>ID和
临时ID
从未合作过。当ID
不存在时,使用Temp ID
。它们都被认为是独一无二的。使用您的公式,除了ID007
与T001
位于同一行之外,其他一切都可以正常工作-我已在选项卡表单响应(格式化)
上使用您的公式更新了谷歌工作表,您可以比较预期结果以查看差异。您对如何调整公式以适应这种情况有何建议?再次感谢!编辑答案以包含第二个公式,将ID
s和Temp ID
s放在各自的行中。Thnaks!工作得好多了@您对按参考号对数据进行排序有什么建议吗?我试图通过Col1 asc将order添加到查询中,但不希望使用公式。目前,参考#999
位于第10行,其余位于第18行和第19行。似乎它的排序是基于ID
,然后是Temp ID
。将整个内容包装在查询(…,“按Col1排序”,0)
。这就成功了!谢谢你的辛勤工作!太完美了!