根据年份范围的单元格值在 Excel 中创建单独的行

根据年份范围的单元格值在 Excel 中创建单独的行

我在 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"

答案2

根据您的样本,尝试以下公式:

=IF(VALUE(LEFT($B$2,4))+ROW()-COLUMN($B$2)>VALUE(RIGHT($B$2,4)),"",VALUE(LEFT($B$2,4))+ROW()-COLUMN($B$2))

在此处输入图片描述 但是你说你的数据源有4k,你可以尝试提供更复杂的数据源。

相关内容