Композитне рішення для виклику Podcast 2316 - Поради Excel

Примітка

Це одна із серії статей, що детально описують рішення, спрямовані на виклик Podcast 2316.

Вивчивши всі ідеї, надіслані глядачами, я вибрав улюблені прийоми для кожного відео. Моє остаточне рішення використовує ці кроки:

  • Отримуйте дані з іменованого діапазону
  • Видаліть два додаткові кроки, додані до Просування заголовків та Змінення типу. Це запобігає необхідності розривати суфікс із чвертей. Дякую Джейсону М, Ондрею Малінському та Пітеру Варфоломію за цю ідею.
  • Транспонувати
  • Рекламуйте заголовки
  • Видалити, Топ рядки, Топ 5 рядків. Гарний фокус від М.Ф. Вонга.
  • Замініть Q1 на _Q1. Повторюйте інші три чверті. Дякую Джонатану Куперу.
  • Розділений розділювачем на _. Цей дивовижний крок зберігає імена в одній колонці та переміщує чверті до наступної колонки. Запропонований Фоумі, вдосконалений Джонатаном Купером.
  • (Ні на крок!) Пройдіть до рядка формул і перейменуйте стовпці на „Працівник” та „Квартал”. Дякую Джошу Джонсону
  • У стовпці Працівник нічого не замініть на null
  • Заповніть
  • У стовпці Квартал змініть значення null на Total. Ця ідея від Майкла Карпфена
  • Видалити інші стовпці. Перейменуйте Attrib у категорію в рядку формул
  • Зворотні квартали
  • Перемістити загальний стовпець до кінця

Ось мій остаточний код:

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. Я вже надіслав кілька листів. Якщо ви його не отримали, залиште коментар до відео нижче.

Патч для гуру Excel

Загальним переможцем став Білл Шиш. Його чотирирядкове рішення з використанням M говорить мені, що мені потрібно набагато більше дізнатись про Power Query! Перегляньте його рішення у Power Query: Світ Білла Шиша.

Переглянути відео

Ось моє остаточне відео, що обговорює рішення та демонструє остаточне рішення.

Поверніться на головну сторінку завдання Podcast 2316.

Цікаві статті...