Есть ли способ переставить данные Excel без копирования пасты? - PullRequest
0 голосов
/ 28 марта 2020

У меня есть файл Excel, который содержит название страны и даты в качестве имени столбца.

+---------+------------+------------+------------+
| country | 20/01/2020 | 21/01/2020 | 22/01/2020 |
+--------- ------------+------------+------------+
| us      |   0        |   5        |       6    |
+---------+------------+------------+------------+
| Italy   | 20         |   23       |      33    |
+--------- ------------+------------+------------+
| India   |   0        |   0        |       6    |
+---------+------------+------------+------------+

Но мне нужно упорядочить имена столбцов страны, даты и количества. Есть ли способ переупорядочить данные Excel без вставки копий.

окончательный лист Excel должен выглядеть следующим образом

+---------+------------+------------+
| country | date       | count      | 
+--------- ------------+------------+
| us      | 20/01/2020 |   0        | 
+---------+------------+------------+
| us      | 21/01/2020 |   5        |   
+---------+------------+------------+
| us      | 22/01/2020 |   6        |    
+---------+------------+------------+
| Italy   | 20/01/2020 |   20       |     
+--------- ------------+------------+
| Italy   | 21/01/2020 |   23       |     
+--------- ------------+------------+
| Italy   | 22/01/2020 |   33       |      
+--------- ------------+------------+
| India   | 20/01/2020 |   0        | 
+---------+------------+------------+

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

Отключить с помощью Power Query:

  • Data --> Get & Transform --> From Table/Range
  • Выберите столбец country
    • Отключить другие столбцы
  • Переименуйте получившиеся столбцы Attribute и Value в date и count
  • Поскольку даты в заголовке преобразованы в текст, вам может потребоваться изменить date тип столбца до date или, как я сделал, до date using locale

enter image description here

M-код

    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"country", type text}, {"20/01/2020", Int64.Type}, {"21/01/2020", Int64.Type}, {"22/01/2020", Int64.Type}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"country"}, "date", "count"),
    #"Changed Type with Locale" = Table.TransformColumnTypes(#"Unpivoted Other Columns", {{"date", type date}}, "en-150")
in
    #"Changed Type with Locale"
1 голос
/ 28 марта 2020

Power Pivot - лучший способ, но если вы хотите использовать формулы: В F1 введите:

=INDEX($A$2:$A$4,ROUNDUP(ROWS($1:1)/3,0))

и скопируйте вниз. В G1 введите:

=INDEX($B$1:$D$1,MOD(ROWS($1:1)-1,3)+1)

и скопируйте вниз. H1 введите:

=INDEX($B$2:$D$4,ROUNDUP(ROWS($1:1)/3,0),MOD(ROWS($1:1)-1,3)+1)

и скопируйте вниз

enter image description here

3 в этих формулах, потому что у нас есть 3 дат в исходной таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...