规范化Google表格中的数据-TRANSPOSE多列填充

时间:2019-03-25 20:42:37

标签: google-sheets transpose google-sheets-formula

我有需要标准化的数据。 Col C中用逗号分隔的任何值都需要其自己的行。

这是我的sheet

数据在Col A-Col C中,所需结果为int Col E-ColG。

这个问题很有帮助,我得到了适用于列C的公式,但是当我尝试将列A和B进行积分时,它就失败了:

Transpose, Split, and Join Google Sheets

2 个答案:

答案 0 :(得分:1)

这个相当长的公式可以满足您的要求

=query(
  arrayformula(
    split(
      transpose(
        split(
          textjoin(
            "\",
            0,
            $B3:B4 &
              "|" & 
              split(C3:C4, ", ")
          ),
          "\"
        )
      ),
      "|"
    )
  ),
  "select * where Col2 <> ''"
)

enter image description here

说明:确实太长太无聊了。只需从最里面的公式开始重新构建查询,即可了解其工作原理。

添加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<>''"))

0


=ARRAYFORMULA(QUERY(SPLIT(TRANSPOSE(SPLIT(IFERROR(TEXTJOIN( "♦", 1, 
 SUBSTITUTE($A3:A&"♠"&$B3:B&"♠"&IFERROR(SPLIT(
 REGEXREPLACE(C3:C, ", |,", "♥"), "♥")), "♠♠", ""))), "♦")), "♠"), "where Col3<>''"))

0