Excel Преобразовать марку / модель / диапазон лет в отдельные строки год / марку / модель - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь систематически расширить таблицу комбинаций Марка / Модель / Годовой диапазон в отдельные строки года. Я пытался найти решения, но ни один из них не соответствует моему варианту использования, и я не знаю, что насчет VBA первым, поэтому мне нужно немного подержать здесь.

Я использую Excel Office 365, я пытался что-то выяснить с помощью PowerPivot и объединять запросы, но ни один из них не достиг того, что мне нужно.

Вот данные, с которыми я работаю (столбцы 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

... и т. Д.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Вы можете сделать это с помощью Power Query. Отформатируйте исходные данные (A: D) в виде таблицы, затем что-то вроде:

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"
1 голос
/ 12 июня 2019

Использование Microsoft Query и исходного файла Excel с двумя именованными диапазонами MAKES и YEARS (второй - один столбец лет, охватывающий желаемый диапазон)

Запрос:

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
...