Excel 将 Make/Model/Year 范围转换为单个 Year/Make/Model 行

Excel Convert Make/Model/Year Range into Individual Year/Make/Model rows

我正在尝试系统地将 table 的 Make/Model/Year 范围组合扩展到单独的年份行中。我已经尝试寻找解决方案,但 none 似乎符合我的用例,而且我不知道关于 VBA 的第一件事,所以在这里需要一点帮助。

我正在使用 Excel Office 365,我尝试使用 PowerPivot 解决问题并合并查询,但 none 将完成我需要的。

这是我使用的数据(列 A:D)

Make    Model      From    To
ACURA   MDX       2001     2009
ACURA   RDX       2008     2009
ACURA   SLX       1996     1998
ACURA   TL        1999     2008
ACURA   TSX       2008     2009

所需的输出将是:

Year    Make    Model
2001    ACURA   MDX
2002    ACURA   MDX
2003    ACURA   MDX
2004    ACURA   MDX
2005    ACURA   MDX
2006    ACURA   MDX
2007    ACURA   MDX
2008    ACURA   MDX
2009    ACURA   MDX
2008    ACURA   RDX
2009    ACURA   RDX
1996    ACURA   SLX
1997    ACURA   SLX
1998    ACURA   SLX

...等等

使用 Microsoft Query 和具有两个命名范围 MAKES 和 YEARS 的源 Excel 文件(第二个是跨越所需范围的 single-column 年)

查询:

SELECT MAKES.Make, MAKES.Model, YEARS.Year
FROM `C:\Users\userName\Desktop\Test.xlsx`.MAKES MAKES, 
     `C:\Users\userName\Desktop\Test.xlsx`.YEARS YEARS
WHERE MAKES.`From` <= YEARS.Year AND MAKES.To >= YEARS.Year

您可以使用 Power Query 执行此操作。将您的源数据 (A:D) 格式化为 table,然后是:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Added Year List" = Table.AddColumn(Source, "Year", each List.Numbers([From],[To]-[From]+1)),
    #"Expanded Years To Rows" = Table.ExpandListColumn(#"Added Year List", "Year"),
    #"Removed Other Columns" = Table.SelectColumns(#"Expanded Years To Rows",{"Year", "Make", "Model"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Removed Other Columns",{{"Year", Int64.Type}, {"Make", type text}, {"Model", type text}})
in
    #"Changed Type"