我有需要标准化的数据。 Col C中用逗号分隔的任何值都需要其自己的行。
这是我的sheet
数据在Col A-Col C中,所需结果为int Col E-ColG。
这个问题很有帮助,我得到了适用于列C的公式,但是当我尝试将列A和B进行积分时,它就失败了:
答案 0 :(得分:1)
这个相当长的公式可以满足您的要求
=query(
arrayformula(
split(
transpose(
split(
textjoin(
"\",
0,
$B3:B4 &
"|" &
split(C3:C4, ", ")
),
"\"
)
),
"|"
)
),
"select * where Col2 <> ''"
)
说明:确实太长太无聊了。只需从最里面的公式开始重新构建查询,即可了解其工作原理。
添加A列作为练习留给读者。
答案 1 :(得分:1)
对@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<>''"))