Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 将包含分隔符的单行中的多列数据转换为多行并展平分隔符,以便每个单元格中只有一项_Google Sheets_Split_Google Sheets Formula_Array Formulas_Flatten - Fatal编程技术网

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
。它们都被认为是独一无二的。使用您的公式,除了ID
007
T001
位于同一行之外,其他一切都可以正常工作-我已在选项卡
表单响应(格式化)
上使用您的公式更新了谷歌工作表,您可以比较预期结果以查看差异。您对如何调整公式以适应这种情况有何建议?再次感谢!编辑答案以包含第二个公式,将
ID
s和
Temp ID
s放在各自的行中。Thnaks!工作得好多了@您对按参考号对数据进行排序有什么建议吗?我试图通过Col1 asc将order添加到查询
中,但不希望使用公式。目前,参考#
999
位于第10行,其余位于第18行和第19行。似乎它的排序是基于
ID
,然后是
Temp ID
。将整个内容包装在
查询(…,“按Col1排序”,0)
。这就成功了!谢谢你的辛勤工作!太完美了!