我在 Excel 16.53 中有以下数据
姓名 | 年 |
---|---|
第一的 | 2019-2021 |
我想以编程方式根据年份范围创建单独的行,如下所示:
姓名 | 年 |
---|---|
第一的 | 2021 |
第一的 | 2020 |
第一的 | 2019 |
我的目标是保持行中所有其他单元格的值相同,但将年份范围更改为单独的年份,并且每年有单独的行。
我怎样才能在超过 4k 行的表中实现这一点?
答案1
以下是使用 Power Query 执行此操作的方法。
- 使用 Ctrl+T 为您的数据创建一个表。如果您希望以下代码正常工作,请将表命名为“MyTable”,或进行相应调整。
- 使用数据功能区中的“来自工作表”将表加载到 Power Query 中。
- 用分隔符“-”分割年份列
- 创建一个自定义列,其中包含从年份 1 到年份 2 的年份列表。
- 单击新列的列标题中的图标来展开列表
- 删除不再需要的列。
您不需要为此编写任何代码,只需单击用户界面中的命令即可,但是当您查看代码时,它看起来像这样:
let
Source = Excel.CurrentWorkbook(){[Name="MyTable"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Year", type text}}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "Year", Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), {"Year.1", "Year.2"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Year.1", Int64.Type}, {"Year.2", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type1", "list", each {[Year.1]..[Year.2]}),
#"Expanded list" = Table.ExpandListColumn(#"Added Custom", "list"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded list",{"Year.1", "Year.2"})
in
#"Removed Columns"