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

Excel 将单元格中的值拆分为列和行,excel,excel-formula,office365,delimiter,Excel,Excel Formula,Office365,Delimiter,是否可以将一个单元格内的数据拆分为单元格和行?我知道使用power query可以使用分隔符将数据拆分为两列,但我想知道是否也可以使用公式将数据拆分为行和列。实际中所需的输出可以在电子表格中的任何位置(实际中将在表2中) 是的。通过Microsoft Excel功能在“数据>文本到列”菜单中找到 理想的文本通常是单空格(需要单空格字体)或用逗号或其他类型的分隔符分隔 提供好的数据=更好的结果 在单击文本到列之前,请确保选择要“拆分”的单元格范围 在电源查询中,您可以根据您的问题将其拆分为行和列

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


是的。通过Microsoft Excel功能在“数据>文本到列”菜单中找到

理想的文本通常是单空格(需要单空格字体)或用逗号或其他类型的分隔符分隔

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

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


在电源查询中,您可以根据您的问题将其拆分为行和列

  • 删除逗号
  • 使用
    作为分隔符拆分为行
  • 使用
    作为分隔符拆分为列
-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", type text}}),
    
    //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", type text}, {"Column2.2", type text}})
in
    #"Changed Type2"
let
Source=Excel.CurrentWorkbook(){[Name=“Table1”]}[Content],
#“更改的类型”=Table.TransformColumnTypes(源,{{“Column1”,类型text},{“Column2”,类型text}),
//删除多余的逗号
#“替换的值”=Table.ReplaceValue(#“已更改的类型”、“、”、”、replace.ReplaceText、{“Column2”}),
//按换行方式拆分为行
#“按分隔符拆分列”=Table.ExpandListColumn(
表.转换列(#“替换值”{
{“Column2”,Splitter.SplitTextByDelimiter(#(lf)”,QuoteStyle.Csv),让
itemType=(type nullable text)meta[Serialized.text=true],在类型{itemType}}中,“Column2”),
#“Changed Type1”=Table.TransformColumnTypes(#“按分隔符拆分列”,{{“Column2”,键入text}),
//在上拆分为列
#“按分隔符拆分列1”=表.SplitColumn(#“更改类型1”、“列2”,
Splitter.SplitTextByEachDelimiter({“”},QuoteStyle.Csv,false),{“Column2.1”,“Column2.2}),
#“Changed Type2”=Table.TransformColumnTypes(#“按分隔符拆分列1”,{{{“Column2.1”,键入text},{“Column2.2”,键入text})
在里面
#“已更改类型2”

根据问题通过公式:

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[.!='']")
C6
中的公式:

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

不过,根据答案,我也推荐PowerQuery。

谢谢!我将尝试powerquery解决方案,但这仍然非常有用。嗨,这很有效,尽管随着我的进步,我现在想知道是否有可能以这种方式将数据拆分为3+列。例如,第3列为溶剂,所有溶剂均以与第2列相同的方式列出(即在一个单元格内)。然而,当power query似乎拒绝以这种方式拆分时。作为power query的新手,我意识到我最初的问题其实非常简单,到目前为止,我还没有使用提供的M代码,而是使用了上面提供的步骤。同样,你认为可以拆分3+列吗?@Nick只要有某种逻辑一致的方法来完成拆分,就应该是可行的。建议将其作为单独的问题发布,以及您尝试过的内容和遇到的任何问题。您可能需要添加一个索引列以将不同的行保持在一起。谢谢,是的,我发布了一个新问题,因为我觉得它略有不同。我会在这段时间继续努力,看看我能不能想出什么办法。
=FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXTJOIN(CHAR(10),,B2:B4),",","")&CHAR(10),"ppm"&CHAR(10)," ")," ","</s><s>")&"</s></t>","//s[.*0=0]")