标准化 Google 工作表中的数据 - TRANSPOSE 多列向下填充
Normalize Data in Google Sheets - TRANSPOSE multiple columns Fill Down
我有需要规范化的数据。 Col C 中用逗号分隔的任何值都需要单独一行。
这是我的sheet
数据在 Col A - Col C 中,期望的结果是 int Col E-ColG。
这个问题很有帮助,我得到了适用于 col C 的公式,但是当我尝试整合 col A 和 B 时,它崩溃了:
这个相当长的公式可以满足您的需求
=query(
arrayformula(
split(
transpose(
split(
textjoin(
"\",
0,
$B3:B4 &
"|" &
split(C3:C4, ", ")
),
"\"
)
),
"|"
)
),
"select * where Col2 <> ''"
)
说明:写的实在是太长太无聊了。只需从最里面的公式开始重建查询,看看它是如何工作的。
添加列 A 留作 reader 的练习。
@ttarchala's 解决方案的可扩展修改:
=ARRAYFORMULA(QUERY(SPLIT(TRANSPOSE(SPLIT(IFERROR(TEXTJOIN(
"♦", 1, $A3:A&"♠"&$B3:B&"♠"&IFERROR(SPLIT(C3:C, ", ")))), "♦")), "♠"),
"where Col2<>'' and Col3<>''"))
=ARRAYFORMULA(QUERY(SPLIT(TRANSPOSE(SPLIT(IFERROR(TEXTJOIN( "♦", 1,
SUBSTITUTE($A3:A&"♠"&$B3:B&"♠"&IFERROR(SPLIT(
REGEXREPLACE(C3:C, ", |,", "♥"), "♥")), "♠♠", ""))), "♦")), "♠"), "where Col3<>''"))
我有需要规范化的数据。 Col C 中用逗号分隔的任何值都需要单独一行。
这是我的sheet
数据在 Col A - Col C 中,期望的结果是 int Col E-ColG。
这个问题很有帮助,我得到了适用于 col C 的公式,但是当我尝试整合 col A 和 B 时,它崩溃了:
这个相当长的公式可以满足您的需求
=query(
arrayformula(
split(
transpose(
split(
textjoin(
"\",
0,
$B3:B4 &
"|" &
split(C3:C4, ", ")
),
"\"
)
),
"|"
)
),
"select * where Col2 <> ''"
)
说明:写的实在是太长太无聊了。只需从最里面的公式开始重建查询,看看它是如何工作的。
添加列 A 留作 reader 的练习。
@ttarchala's 解决方案的可扩展修改:
=ARRAYFORMULA(QUERY(SPLIT(TRANSPOSE(SPLIT(IFERROR(TEXTJOIN(
"♦", 1, $A3:A&"♠"&$B3:B&"♠"&IFERROR(SPLIT(C3:C, ", ")))), "♦")), "♠"),
"where Col2<>'' and Col3<>''"))
=ARRAYFORMULA(QUERY(SPLIT(TRANSPOSE(SPLIT(IFERROR(TEXTJOIN( "♦", 1,
SUBSTITUTE($A3:A&"♠"&$B3:B&"♠"&IFERROR(SPLIT(
REGEXREPLACE(C3:C, ", |,", "♥"), "♥")), "♠♠", ""))), "♦")), "♠"), "where Col3<>''"))