将单元格中的值拆分为列和行
Split values in cell into columns and rows
是否可以将一个单元格内的数据拆分为单元格和行?我知道使用 power query 您可以使用 , 作为分隔符拆分为 2 列,但我想知道是否也可以使用公式将这些数据拆分为行和列。实际上所需的输出可以在电子表格中的任何位置(实际上将在 sheet2 中)。
是的。通过在菜单数据 > 文本到列中找到的 Microsoft Excel Text To Columns 函数。
理想的文本通常是等宽(需要等宽字体)或由逗号或其他类型的分隔符分隔。
提供良好的数据 = 更好的结果
在单击“文本到列”之前,请务必select要“拆分”的单元格范围。
在 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", 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"
根据问题通过公式:
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),,B2:B4),",","")&CHAR(10),"ppm"&CHAR(10)," ")," ","</s><s>")&"</s></t>","//s[.*0=0]")
虽然我也根据 的回答推荐 PowerQuery。
是否可以将一个单元格内的数据拆分为单元格和行?我知道使用 power query 您可以使用 , 作为分隔符拆分为 2 列,但我想知道是否也可以使用公式将这些数据拆分为行和列。实际上所需的输出可以在电子表格中的任何位置(实际上将在 sheet2 中)。
是的。通过在菜单数据 > 文本到列中找到的 Microsoft Excel Text To Columns 函数。
理想的文本通常是等宽(需要等宽字体)或由逗号或其他类型的分隔符分隔。
提供良好的数据 = 更好的结果
在单击“文本到列”之前,请务必select要“拆分”的单元格范围。
在 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", 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"
根据问题通过公式:
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),,B2:B4),",","")&CHAR(10),"ppm"&CHAR(10)," ")," ","</s><s>")&"</s></t>","//s[.*0=0]")
虽然我也根据