将单元格中的值拆分为列和行

问题描述

是否可以将一个单元格中的数据拆分为单元格和行?我了解使用 power query 您可以使用,作为分隔符将其拆分为 2 列,但我想知道是否也可以使用公式将这些数据拆分为行和列。实际所需的输出可以在电子表格中的任何位置(实际上将在 sheet2 中)。

enter image description here

解决方法

在 Power Query 中,您可以根据您的问题分成两个行和列。

  • 去掉逗号
  • 使用 <line feed> 作为分隔符拆分成行
  • 使用 <space> 作为分隔符拆分成列

-M 代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1",type text},{"Column2",type text}}),//Remove the extraneous commas
    #"Replaced Value" = Table.ReplaceValue(#"Changed Type",","",Replacer.ReplaceText,{"Column2"}),//Split by linefeed into rows
    #"Split Column by Delimiter" = Table.ExpandListColumn(
        Table.TransformColumns(#"Replaced Value",{
            {"Column2",Splitter.SplitTextByDelimiter("#(lf)",QuoteStyle.Csv),let
                 itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}),"Column2"),#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column2",//split on the <space> into columns
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Changed Type1","Column2",Splitter.SplitTextByEachDelimiter({" "},QuoteStyle.Csv,false),{"Column2.1","Column2.2"}),#"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Column2.1",{"Column2.2",type text}})
in
    #"Changed Type2"

enter image description here

,

根据问题通过公式:

enter image description here

A6 中的公式:

=FILTERXML("<t><s>"&TEXTJOIN("</s><s>",REPT(A2:A3&"</s><s>",LEN(B2:B3)-LEN(SUBSTITUTE(B2:B3,CHAR(10),""))+1))&"</s></t>","//s[.!='']")

B6 中的公式:

=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXTJOIN(CHAR(10),B2:B4),"")&CHAR(10),"ppm"&CHAR(10)," ")," ","</s><s>")&"</s></t>","//s[.*0!=0][.!='']")

C6 中的公式:

=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXTJOIN(CHAR(10),"//s[.*0=0]")

虽然我也建议根据 other 的答案使用 PowerQuery。

,

是的。通过 Microsoft Excel Text To Columns 函数在菜单数据 > 文本到列中找到。

理想的文本通常是等宽(需要等宽字体)或由逗号或其他类型的分隔符分隔。

提供好的数据 = 更好的结果

在单击“文本到列”之前,请务必选择要“拆分”的单元格范围。

image1