Преобразовать строки в столбцы со значениями в Excel, используя пользовательский формат - PullRequest
1 голос
/ 21 сентября 2019

У меня есть лист Excel с 1 столбцом объединенной ячейки и 3 вложенными столбцами. Поэтому я хочу выполнить пользовательскую сортировку столбцов и строк на основе моего формата.Я пытался использовать такой индекс =INDEX(Full!$A$1:$AH$579,COLUMN(A1),ROW(A1)), но в моем случае это не сработало, поэтому позвольте мне решить

Например.У меня есть такой формат (со значениями)

Names   Date    1   2   3   4   5   6   7   8   9   10
Rahul   Value1  11  22  333 1   7857    7857    0   7857    0   0
        Value2  11  22  333 2   738558  8454132 0   12995478    0   0
        Value3  11  22  333 3   730701  8446275 0   12987621    0   0
Akash   Value1  111 33  336 7857    7857    7857    0   7857    0   0
        Value2  222 33  337 13215474    738558  8454132 0   12995478    0   0
        Value3  333 33  338 13207617    730701  8446275 0   12987621    0   0
Sumit   Value1  57  37  339 7857    7857    7857    0   7857    0   0
        Value2  58  38  340 13215474    738558  8454132 0   12995478    0   0
        Value3  59  39  333 13207617    730701  8446275 0   12987621    0   0
Mohan   Value1  7857    7857    7857    7857    7857    7857    0   7857    0 0
        Value2  12555486    13490469    6497739 13215474    738558  8454132 0 12995478  0   0
        Value3  12547629    13482612    6489882 13207617    730701  8446275 0   12987621    0   0
Rathod  Value1  2   7857    7857    7857    7857    7857    0   7857    0   0
        Value2  3   13490469    6497739 13215474    738558  8454132 0   12995478    0   0
        Value3  4   13482612    6489882 13207617    730701  8446275 0   12987621    0   0
Nikhil  Value1  11  7857    7857    7857    7857    7857    0   7857    0   0
        Value2  22  13490469    6497739 13215474    738558  8454132 0   12995478    0   0
        Value3  33  13482612    6489882 13207617    730701  8446275 0   12987621    0   0

, и я хочу этот формат:

Date    Names   Rahul   Akash   Sumit   Mohan   Rathod  Nikhil
1       Value1  11  111 57  7857    2   11
        Value2  11  222 58  12555486    3   22
        Value3  11  333 59  12547629    4   33
2       Value1  22  33  37  7857    7857    7857
        Value2  22  33  38  13490469    13490469    13490469
        Value3  22  33  39  13482612    13482612    13482612
3       Value1  333 336 339 7857    7857    7857
        Value2  333 337 340 6497739 6497739 6497739
        Value3  333 338 333 6489882 6489882 6489882
4       Value1  1   7857    7857    7857    7857    7857
        Value2  2   13215474    13215474    13215474    13215474    13215474
        Value3  3   13207617    13207617    13207617    13207617    13207617
5       Value1  7857    7857    7857    7857    7857    7857
        Value2  738558  738558  738558  738558  738558  738558
        Value3  730701  730701  730701  730701  730701  730701
6       Value1  7857    7857    7857    7857    7857    7857
        Value2  8454132 8454132 8454132 8454132 8454132 8454132
        Value3  8446275 8446275 8446275 8446275 8446275 8446275
7       Value1  0   0   0   0   0   0
        Value2  0   0   0   0   0   0
        Value3  0   0   0   0   0   0
8       Value1  7857    7857    7857    7857    7857    7857
        Value2  12995478    12995478    12995478    12995478    12995478    12995478
        Value3  12987621    12987621    12987621    12987621    12987621    12987621
9       Value1  0   0   0   0   0   0
        Value2  0   0   0   0   0   0
        Value3  0   0   0   0   0   0
10      Value1  0   0   0   0   0   0
        Value2  0   0   0   0   0   0
        Value3  0   0   0   0   0   0
  1. Оригинальный лист

  2. Новый лист

1 Ответ

0 голосов
/ 23 сентября 2019

Это можно сделать в Power Query несколькими щелчками мыши.

Пожалуйста, обратитесь к этой статье , чтобы узнать, как использовать Power Query в вашей версии Excel.Он доступен в Excel 2010 Professional Plus и более поздних версиях .Моя демонстрация использует Excel 2016 .

Шаги:

  1. Добавьте исходную таблицу в Power Query Editor .Вы заметите, что объединенные ячейки «не объединены» автоматически;

Step 1

Щелкните правой кнопкой мыши заголовок первого столбца и перейдите к Заполнить , затем выберите Down;

Step 2

Используйте функцию Объединить столбцы на вкладке Transform, чтобы объединить первые два столбца со стандартным разделителем, таким как точка с запятой ;;

Step 3

Используйте Unpivot Columns на вкладке Transform, чтобы отменить все остальные столбцы, кроме объединенного, затем вам нужно следующее:

Step 4

Используйте функцию Разделить столбец на вкладке Transform, чтобы разделить объединенный столбец, используя тот же разделитель, что и на шаге 3;

Step 5

Pivot первого столбца и выберите Value для столбца значений;

Step 6

Измените формат столбца Attribute на целое число , затем отсортируйте этот столбец по возрастанию, а затем отсортируйте также первый столбец по возрастанию;

Step 7

Переименуйте и переставьте столбцы по желанию, а затем Закройте и загрузите таблицу на новый лист (по умолчанию).

Step 8

Обратите внимание, что первый столбец выходной таблицы не объединен.Вы не можете вручную объединить их в таблицу .Поскольку эта таблица связана с исходной таблицей, если вы собираетесь внести какие-либо изменения в исходные данные, вы можете просто обновить выходную таблицу, чтобы получить обновленный результат, как показано ниже:

Refreshed

Здесь приведены Power Query M Codes за сценой только для справки.На всех этапах используются функции built-in редактора, что довольно просто.

let
    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Names", type text}, {"Date", type text}, {"1", Int64.Type}, {"2", Int64.Type}, {"3", Int64.Type}, {"4", Int64.Type}, {"5", Int64.Type}, {"6", Int64.Type}, {"7", Int64.Type}, {"8", Int64.Type}, {"9", Int64.Type}, {"10", Int64.Type}}),
    #"Filled Down" = Table.FillDown(#"Changed Type",{"Names"}),
    #"Merged Columns" = Table.CombineColumns(#"Filled Down",{"Names", "Date"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Merged"),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Merged Columns", {"Merged"}, "Attribute", "Value"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Columns", "Merged", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Merged.1", "Merged.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Merged.1", type text}, {"Merged.2", type text}}),
    #"Pivoted Column" = Table.Pivot(#"Changed Type1", List.Distinct(#"Changed Type1"[Merged.1]), "Merged.1", "Value", List.Sum),
    #"Changed Type2" = Table.TransformColumnTypes(#"Pivoted Column",{{"Attribute", Int64.Type}}),
    #"Sorted Rows" = Table.Sort(#"Changed Type2",{{"Attribute", Order.Ascending}, {"Merged.2", Order.Ascending}}),
    #"Reordered Columns" = Table.ReorderColumns(#"Sorted Rows",{"Attribute", "Merged.2", "Rahul", "Akash", "Sumit", "Mohan", "Rathod", "Nikhil"}),
    #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns",{{"Attribute", "Date"}, {"Merged.2", "Names"}})
in
    #"Renamed Columns"

Дайте мне знать, если у вас есть какие-либо вопросы.Ура :) 1126 *

...