Ir para conteúdo
  • 0

Rateio Unpivot


chicopra
Ir para solução Solucionado por Vitor Peralva ,

Pergunta

  • Membros

Olá, eu tenho uma planilha que é o retorno de um formulário de utilização de veículos, onde o motorista seleciona o veículo que utilizou, informa as quilometragens, porém a utilização do veículo pode ser para mais de uma empresa, então existe uma coluna para ele selecionar uma empresa e na coluna seguinte ele informa o % para determinada empresa:

image.png.424cc457c9a442502607a7bfa56e632f.png

No mesmo formulário ele pode informar alguma outra despesa da viagem e informar o rateio da mesma forma:

image.png.68d01a92f5dd871b6afeb3c2ed50ba62.png

Eu preciso pegar a quantidade de km rodados, calcular um custo de R$ 2 por km e ratear conforme formulário. Também preciso fazer o rateio da despesa.

Como eu faço o unpivot dessas colunas para que eu tenha uma coluna com o nome da empresa das colunas das empresas e outra coluna com os respectivos rateios para os dois critérios (custo km por empresa e rateio de despesa por empresa)?

 

Segue a planilha e PBIX de exemplo, caso ajude.

Obrigado,Teste Tabela Colunas.xlsx

Relatório de Veículos.pbix

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Membros
  • Solução

Bom Dia, @chicopra!

 

Tente o seguinte código, alterando na Fonte para o endereço do seu arquivo no seu computador:

 

let
    Fonte = Excel.Workbook(File.Contents("C:\Users\vitor\Downloads\Teste Tabela Colunas.xlsx"), null, true),
    Tabela1_Table = Fonte{[Item="Tabela1",Kind="Table"]}[Data],
    #"Outras Colunas Não Dinâmicas" = Table.UnpivotOtherColumns(Tabela1_Table, {"veículo", "km inicial", "km fim", "data inicio", "data fim", "despesa"}, "Atributo", "Valores"),
    #"Texto Extraído Antes do Delimitador" = Table.TransformColumns(#"Outras Colunas Não Dinâmicas", {{"Atributo", each Text.BeforeDelimiter(_, " ", {0, RelativePosition.FromEnd}), type text}}),
    #"Personalização Adicionada" = Table.AddColumn(#"Texto Extraído Antes do Delimitador", "Colunas", each [
    Tipo = if Text.End([Atributo], 2) = "km" then "Kilometragem" else "Despesa",
    Empresa = if Text.Start([Atributo], 2) = "em" then [Valores] else null,
    Valor = if Empresa <> null then null else if Tipo = "Despesa" then [despesa] * [Valores] else ( ([km fim] - [km inicial]) * 2 ) * [Valores]
]),
    #"Tipo Expandido" = Table.ExpandRecordColumn(#"Personalização Adicionada", "Colunas", {"Tipo", "Empresa", "Valor"}, {"Tipo", "Empresa", "Valor"}),
    #"Preenchido Abaixo" = Table.FillDown(#"Tipo Expandido",{"Empresa"}),
    #"Linhas Filtradas" = Table.SelectRows(#"Preenchido Abaixo", each ([Valor] <> null)),
    #"Colunas Removidas" = Table.RemoveColumns(#"Linhas Filtradas",{"Atributo", "Valores"})
in
    #"Colunas Removidas"

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros
34 minutos atrás, Vitor Peralva disse:

Bom Dia, @chicopra!

 

Tente o seguinte código, alterando na Fonte para o endereço do seu arquivo no seu computador:

 

let
    Fonte = Excel.Workbook(File.Contents("C:\Users\vitor\Downloads\Teste Tabela Colunas.xlsx"), null, true),
    Tabela1_Table = Fonte{[Item="Tabela1",Kind="Table"]}[Data],
    #"Outras Colunas Não Dinâmicas" = Table.UnpivotOtherColumns(Tabela1_Table, {"veículo", "km inicial", "km fim", "data inicio", "data fim", "despesa"}, "Atributo", "Valores"),
    #"Texto Extraído Antes do Delimitador" = Table.TransformColumns(#"Outras Colunas Não Dinâmicas", {{"Atributo", each Text.BeforeDelimiter(_, " ", {0, RelativePosition.FromEnd}), type text}}),
    #"Personalização Adicionada" = Table.AddColumn(#"Texto Extraído Antes do Delimitador", "Colunas", each [
    Tipo = if Text.End([Atributo], 2) = "km" then "Kilometragem" else "Despesa",
    Empresa = if Text.Start([Atributo], 2) = "em" then [Valores] else null,
    Valor = if Empresa <> null then null else if Tipo = "Despesa" then [despesa] * [Valores] else ( ([km fim] - [km inicial]) * 2 ) * [Valores]
]),
    #"Tipo Expandido" = Table.ExpandRecordColumn(#"Personalização Adicionada", "Colunas", {"Tipo", "Empresa", "Valor"}, {"Tipo", "Empresa", "Valor"}),
    #"Preenchido Abaixo" = Table.FillDown(#"Tipo Expandido",{"Empresa"}),
    #"Linhas Filtradas" = Table.SelectRows(#"Preenchido Abaixo", each ([Valor] <> null)),
    #"Colunas Removidas" = Table.RemoveColumns(#"Linhas Filtradas",{"Atributo", "Valores"})
in
    #"Colunas Removidas"

 

É exatamente isso. Sensacional. Parabéns e obrigado!

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...