我正在做一个可视化项目——它将显示去年一月到十二月我们的哪些合作伙伴每月销售的商品数量最多。目前,我们公司的商业智能工具输出如下
Ship State Month Partner Net Demand
AK Jan Coca-Cola 3200
AK Jan Wegman's 2800
AK Jan Target 2000
...
AL Jan Coca-Cola 2600
AL Jan Walmart 2100
AL Jan Target 700
...
WY Jan Wegmans 1600
WY Jan Cola 200
WY Jan Target 98
...
AK Feb Coca-Cola 3100
AK Feb Wegman's 2700
AK Feb Target 1600
...
等等。这是当前输出 - 下面是我想要的输出...Ship State Month Partner Net Demand
AK Jan Coca-Cola 3200
AL Jan Coca-Cola 2600
...
WY Jan Wegmans 1600
...
AK Feb Coca-Cola 3100
...
如果这是有道理的。我只想要按最高净需求排名第一的合作伙伴。我不希望所有其他人都输出。我公司的BI工具非常有限。我在 Excel 中尝试了一个数据透视表,它让我以数据透视表格式获得排名,但是当我复制/粘贴时,所有值都输出错误。我按月过滤然后状态,所以这是一个垂直分割,我无法将所有值彼此相邻以输入 R。当我复制/粘贴时,它看起来像......Jan
AK
Coca Cola 3200
AL
Coca Cola 2600
... etc
有没有办法有效地输出和组织这个?我需要为每个州做每个合作伙伴,而密集的清理工作会花费很多时间,因为我们有很多合作伙伴我必须删除,什么不是。我只想每月输出每个州的最高排名——这是 12 个月内的所有美国州。
最佳答案
这可以使用 Windows Excel 2010+ 和 Excel 365(Windows 或 Mac)中提供的 Power Query 来完成
使用 Power Query
Data => Get&Transform => from Table/Range
或 from within sheet
Home => Advanced Editor
Applied Steps
了解算法M码
let
//Change next line to return your actual table
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
//set data types
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Ship State", type text}, {"Month", type text}, {"Partner", type text}, {"Net Demand", Int64.Type}}),
//Remove rows containing "..."
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Ship State] <> "...")),
//group by State and Month
//then filter each subtable for the maximum Net Demand
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"Ship State", "Month"}, {
{"All", (t)=> Table.SelectRows(t, each [Net Demand] = List.Max(t[Net Demand])),
type table [Ship State=nullable text, Month=nullable text, Partner=nullable text, Net Demand=nullable number]}}),
//Re-exand the relevant table columns
#"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", {"Partner", "Net Demand"})
in
#"Expanded All"
关于excel - 按月在美国所有州的 Excel 中获得最高排名的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72538329/