Заметка
Это одна из серии статей, в которых подробно описаны решения, присланные для задачи Podcast 2316.
Изучив все идеи, присланные зрителями, я выбрал свои любимые техники из каждого видео. В моем окончательном решении используются следующие шаги:
- Получить данные из именованного диапазона
- Удалите два дополнительных шага, добавленных к заголовкам и изменению типа. Это избавляет от необходимости отделять суффикс от четвертей. Спасибо Jason M, Ondřej Malinský и Peter Bartholomew за эту идею.
- Транспонировать
- Продвигать заголовки
- Удалить, верхние ряды, верхние 5 рядов. Хороший трюк от М.Ф. Вонга.
- Замените Q1 на _Q1. Повторите для остальных трех четвертей. Спасибо, Джонатан Купер.
- Разделить по разделителю на _. Этот удивительный шаг сохраняет имена в одном столбце и перемещает четверти в следующий столбец. Предложено Фоуми, усовершенствовано Джонатаном Купером.
- (Ни шага!) Откройте панель формул и переименуйте столбцы в «Сотрудник» и «Квартал». Спасибо Джош Джонсон
- В столбце "Сотрудник" ничего не замените на ноль.
- Заполнить
- В столбце Квартал измените значение null на Всего. Эта идея от Майкла Карпфена
- Отменить разворот других столбцов. Переименуйте Attrib в Category в строке формул
- Сводные кварталы
- Переместить столбец итогов в конец
Вот мой последний код:
let Source = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Transposed Table" = Table.Transpose(Source), #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", (PromoteAllScalars=true)), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",(("Category Description", type text), ("Administrative", type number), ("Holiday", Int64.Type), ("PTO/LOA/Jury Duty", Int64.Type), ("Project A", type number), ("Project B", type number), ("Project C", type number))), #"Removed Top Rows" = Table.Skip(#"Changed Type",5), #"Replaced Value" = Table.ReplaceValue(#"Removed Top Rows","Q1","_Q1",Replacer.ReplaceText,("Category Description")), #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","Q2","_Q2",Replacer.ReplaceText,("Category Description")), #"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1","Q3","_Q3",Replacer.ReplaceText,("Category Description")), #"Replaced Value3" = Table.ReplaceValue(#"Replaced Value2","Q4","_Q4",Replacer.ReplaceText,("Category Description")), #"Split Column by Delimiter" = Table.SplitColumn(#"Replaced Value3", "Category Description", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), ("Employee", "Qtr")), #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",(("Employee", type text), ("Qtr", type text))), #"Replaced Value4" = Table.ReplaceValue(#"Changed Type1","",null,Replacer.ReplaceValue,("Employee")), #"Filled Down" = Table.FillDown(#"Replaced Value4",("Employee")), #"Replaced Value5" = Table.ReplaceValue(#"Filled Down",null,"Total",Replacer.ReplaceValue,("Qtr")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Replaced Value5", ("Employee", "Qtr"), "Attribute", "Value"), #"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns", List.Distinct(#"Unpivoted Other Columns"(Qtr)), "Qtr", "Value", List.Sum), #"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column",("Employee", "Attribute", "Q1", "Q2", "Q3", "Q4", "Total")) in #"Reordered Columns"
Каждый, кто упоминается в этих статьях или видео, получает патч Excel Guru. Я уже разослал несколько. Если вы его не получили, оставьте комментарий к видео ниже.

Абсолютный победитель - Билл Шиш. Его четырехстрочное решение, использующее M, говорит мне, что мне нужно узнать намного больше о Power Query! См. Его решения в Power Query: The World of Bill Szysz.
Смотреть видео
Вот мое последнее видео, в котором обсуждаются решения и показывается окончательное решение.
Вернитесь на главную страницу испытания «Подкаст 2316».