Solução composta para o desafio Podcast 2316 - Dicas do Excel

Nota

Este é um de uma série de artigos detalhando soluções enviadas para o desafio Podcast 2316.

Depois de estudar todas as ideias enviadas pelos espectadores, escolhi minhas técnicas favoritas de cada vídeo. Minha solução final usa estas etapas:

  • Obter dados, de intervalo nomeado
  • Exclua as duas etapas extras adicionadas a Promover cabeçalhos e tipo de mudança. Isso evita ter que quebrar o sufixo dos trimestres. Agradecimentos a Jason M, Ondřej Malinský e Peter Bartholomew por esta ideia.
  • Transpor
  • Promover cabeçalhos
  • Remover, Top Rows, Top 5 Rows. Belo truque de MF Wong.
  • Substitua Q1 por _Q1. Repita para os outros três quartos. Obrigado Jonathan Cooper.
  • Dividido por Delimitador em _. Este passo incrível mantém os nomes em uma coluna e move os trimestres para a próxima coluna. Proposta por Fowmy, aperfeiçoada por Jonathan Cooper.
  • (Nem um passo!) Acesse a Barra de Fórmula e renomeie as colunas como Funcionário e Trimestre. Obrigado Josh Johnson
  • Na coluna Funcionário, substitua nada por nulo
  • Preencher
  • Na coluna Trimestre, altere nulo para Total. Esta ideia de Michael Karpfen
  • Desviar outras colunas. Renomear Atrib para Categoria na barra de fórmulas
  • Pivot Quarters
  • Mova a coluna total para o final

Aqui está meu código final:

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"

Todos os mencionados nesses artigos ou vídeos ganham um patch do Excel Guru. Já enviei vários pelo correio. Se você não receber, deixe um comentário no vídeo abaixo.

Patch do Excel Guru

O vencedor geral é Bill Szysz. Sua solução de quatro linhas usando M me diz que preciso aprender muito mais sobre o Power Query! Veja suas soluções em Power Query: The World of Bill Szysz.

Assistir vídeo

Aqui está meu vídeo final discutindo as soluções e mostrando a solução final.

Volte para a página principal do desafio Podcast 2316.

Artigos interessantes...