Imprimir página | Cerrar ventana

POWER QUERY: Sacar % por cada fila s/ criterios

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86964
Fecha de impresión: 26/Marzo/2026 a las 17:28


Tema: POWER QUERY: Sacar % por cada fila s/ criterios
Publicado por: GENARO1908
Asunto: POWER QUERY: Sacar % por cada fila s/ criterios
Fecha de publicación: 11/Julio/2024 a las 08:04
buenos dias,

tengo un archivo con 13.000 filas y lo tengo trabajado con el power query, me he quedado atascado intentando crear una columna con los % de cantidades que cumplan unos determinados requisitos. (se me ha ocurrido agrupando en otra consulta pero es muy engorrosso, lo he intentado con calculate(sumx... PERO no me sale)

el ejemplo adaptado seria este, yo tengo provincia, proveedor producto y cantidad, y necesitaria sacar el % de productos que se venden por cada provincia...

PROVINCIAPROVEEDORPRODUCTOQ%
Cantabria
1​
Lapiz
10​
100%​
Cantabria
2​
boli
20​
50%​
Cantabria
3​
boli
20​
50%​
Madrid
1​
Lapiz
100​
25%​
Madrid
2​
Lapiz
100​
25%​
Madrid
3​
Lapiz
100​
25%​
Madrid
1​
Lapiz
100​
25%​
Madrid
1​
boli
200​
100%​
Barcelona
1​
boli
1000​
33%​
Barcelona
1​
boli
2000​
67%​

Como podria calcular la columna % dentro del power pivot... en Excel lo tendria facil con un sumar.si.conjunto.. pero aqui no llego para que lo haga en automatico el power query(ni con medidas...)

muchas gracias



Respuestas:
Publicado por: influexcel
Fecha de publicación: 11/Julio/2024 a las 10:48
Hola! Me estreno por aquí :) 

Hay varias formas de hacerlo. La que comentabas de agrupar en otra consulta y combinar, aunque "engorrosa" también sería válida.

Si lo quieres hacer con M, yo lo plantearía así. Primero crearía una función (Como crear una nueva consulta) con el siguiente código:

(tabla as table, provincia as text) =>
let
    Filtro = Table.SelectRows(tabla, each [PROVINCIA] = provincia),
    Total = List.Sum(Filtro[Q])
in
    Total

A esta función la he llamada TotalProvincia. Ahora ya puedes añadir una nueva columna en la consulta principal (he puesto en negrita la parte nueva). Como verás crea una primera columna "Total" con utiizando la función creada. Y luego, añado otra ya realizando la división para sacar el porcentaje.

let
    Origen = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content],
    #"Tipo cambiado" = Table.TransformColumnTypes(Origen,{{"PROVINCIA", type text}, {"IMPORTE", Int64.Type}}),
    NuevaColumna = Table.AddColumn(#"Tipo cambiado", "Total", each TotalProvincia(#"Tipo cambiado", [PROVINCIA])),
    Porcentajes = Table.AddColumn(NuevaColumna, "Porcentaje", each [Q] / [Total])
in
    Porcentajes

Código M es muy versátil y permite realizar lo mismo de varias formas. Creo que esta es de las que queda más claras (importante también por si luego tienes que modificar o adaptar)





Imprimir página | Cerrar ventana