给大家一个Excel拆分列问题。
假设我需要拆分 A 列中的所有单元格。
每个单元格包含多位空间数据,但并不总是包含相同的值范围。示例:
A1: FS13, 10-20CM
A2: 1000N, 20-30CM
A3: 1017N, LVL2, FS18, 20-30CM
我需要为 FS、N、LVL 和 CM 添加新列。但您会注意到,并非每个单元格都包含所有空间数据,并且某些单元格的信息相对于列中的其他单元格而言顺序混乱。有没有办法拆分数据并将其排序为新列的正确顺序?
如果您有公式,请同时说明如何使用该公式。我应该在哪个单元格中使用公式?我需要替换公式中的哪些值才能反映我的特定情况?请解释该过程。
Excel 办公室 365
答案1
如果我理解你的要求,你可以使用Power Query
akaGet&Transform
- 从表/范围获取数据
- 添加索引列
- 修剪文本以使其更简洁
- 按分隔符(逗号)将列拆分为行
- 添加自定义列以分离文本和数字数据
- 文本数据:
=Text.Select([Column1],{"A".."Z"})
- 數字數據:
Text.Select([Column1],{"0".."9","-"})
- 文本数据:
- 删除原件
Column 1
- 在标题列上进行透视,值 = 值列并选择不要聚合在下面
advanced
- 删除索引列
M 代码
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1),
#"Trimmed Text" = Table.TransformColumns(#"Added Index",{{"Column1", Text.Trim, type text}}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Trimmed Text", {{"Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type1", "Header", each Text.Select([Column1],{"A".."Z"})),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Values", each Text.Select([Column1],{"0".."9","-"})),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Column1"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Header]), "Header", "Values"),
#"Removed Columns1" = Table.RemoveColumns(#"Pivoted Column",{"Index"})
in
#"Removed Columns1"
-
-
为了更好地了解发生了什么,请阅读有关 Power Query 的 MS 文档,当您进入 PQ 编辑器时,将上面的 M 代码粘贴到高级编辑器中,然后单独检查每个步骤。
在 M 代码中,您需要将其替换为Table3
您选择时生成的实际表名Get & Transform
table/range