用值分隔单元格并将相关列移动到新行
Separating a cell with values and moving related columns to a new row
我正在尝试用多个值分隔一列 - 用逗号分隔 - 并将每个值移动到下一行,同时从不同列继承相关值。
我找到了与 R、Perl 等相关的解决方案。但是,我想用 excel 或 excel-vba 来处理这个问题。我也曾尝试使用 excel 的 'Text to Column' 功能,然后使用直接 link 映射新单元格,但这并没有解决我的问题。
下面是excel sheet:
Name Subject Topic Tags
Chinedu Mathematics Algebra Algebra, Trigonometry, Maths
Sophia English Comp English,comprehension, New tag
Sonia English Essay English, Essay Writing,Tag
John Maths. Trig. Maths, Trigonometry, New
预期输出为:
Name Subject Topic Tags
Chinedu Mathematics Algebra Algebra
Chinedu Mathematics Algebra Trigonometry
Chinedu Mathematics Algebra Maths
Sophia English Comp English
Sophia English Comp comprehension
Sophia English Comp New tag
John Maths. Trig. Maths
John Maths. Trig. Trigonometry
John Maths. Trig. New
您可以使用 Excel 2010 及更高版本.
中可用的 #powerquery
请参阅此 article 以了解如何在您的 Excel.
版本上使用 Power Query
逻辑是将源数据加载到Power Query Editor,使用Transform
选项卡下的Split Column功能拆分Tags
列以逗号,
为分隔符,将结果放入Rows。
那么你应该有以下内容:
您可以Trim和清理Tags
列,使数据整齐,然后加载输出 table 到新工作表(默认情况下)或创建查询连接并选择将其加载到工作簿中的特定位置。
以下是后台电源查询M代码,仅供参考。您只需要使用编辑器的内置功能就可以得到想要的结果。
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Subject", type text}, {"Topic", type text}, {"Tags", type text}}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Tags", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Tags"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Tags", type text}}),
#"Trimmed Text" = Table.TransformColumns(#"Changed Type1",{{"Tags", Text.Trim, type text}}),
#"Cleaned Text" = Table.TransformColumns(#"Trimmed Text",{{"Tags", Text.Clean, type text}})
in
#"Cleaned Text"
如果您有任何问题,请告诉我。干杯:)
我正在尝试用多个值分隔一列 - 用逗号分隔 - 并将每个值移动到下一行,同时从不同列继承相关值。
我找到了与 R、Perl 等相关的解决方案。但是,我想用 excel 或 excel-vba 来处理这个问题。我也曾尝试使用 excel 的 'Text to Column' 功能,然后使用直接 link 映射新单元格,但这并没有解决我的问题。
下面是excel sheet:
Name Subject Topic Tags
Chinedu Mathematics Algebra Algebra, Trigonometry, Maths
Sophia English Comp English,comprehension, New tag
Sonia English Essay English, Essay Writing,Tag
John Maths. Trig. Maths, Trigonometry, New
预期输出为:
Name Subject Topic Tags
Chinedu Mathematics Algebra Algebra
Chinedu Mathematics Algebra Trigonometry
Chinedu Mathematics Algebra Maths
Sophia English Comp English
Sophia English Comp comprehension
Sophia English Comp New tag
John Maths. Trig. Maths
John Maths. Trig. Trigonometry
John Maths. Trig. New
您可以使用 Excel 2010 及更高版本.
中可用的#powerquery
请参阅此 article 以了解如何在您的 Excel.
版本上使用 Power Query逻辑是将源数据加载到Power Query Editor,使用Transform
选项卡下的Split Column功能拆分Tags
列以逗号,
为分隔符,将结果放入Rows。
那么你应该有以下内容:
您可以Trim和清理Tags
列,使数据整齐,然后加载输出 table 到新工作表(默认情况下)或创建查询连接并选择将其加载到工作簿中的特定位置。
以下是后台电源查询M代码,仅供参考。您只需要使用编辑器的内置功能就可以得到想要的结果。
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Subject", type text}, {"Topic", type text}, {"Tags", type text}}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Tags", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Tags"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Tags", type text}}),
#"Trimmed Text" = Table.TransformColumns(#"Changed Type1",{{"Tags", Text.Trim, type text}}),
#"Cleaned Text" = Table.TransformColumns(#"Trimmed Text",{{"Tags", Text.Clean, type text}})
in
#"Cleaned Text"
如果您有任何问题,请告诉我。干杯:)