excel - 按月在美国所有州的 Excel 中获得最高排名的最简单方法?

标签 excel parsing pivot-table spreadsheet data-cleaning

我正在做一个可视化项目——它将显示去年一月到十二月我们的哪些合作伙伴每月销售的商品数量最多。目前,我们公司的商业智能工具输出如下

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/Rangefrom within sheet
  • 当 PQ 编辑器打开时:Home => Advanced Editor
  • 记下表格 姓名 在第 2 行
  • 粘贴下面的 M 代码代替您看到的
  • 将第 2 行中的表名称更改回最初生成的名称。
  • 阅读评论并探索 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"
    
    enter image description here

    关于excel - 按月在美国所有州的 Excel 中获得最高排名的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72538329/

    相关文章:

    ios - swift 1.2 中的 JSON 解析问题

    python - 将 python 数据框汇总为每条记录一行时出现问题

    excel - 突出显示选定的行和列

    c# - 尝试使用 File.Move 移动文件时出现 FileNotFound 异常

    c++ - 如何使用 C++ 解析 vector 的路径

    Objective-C header 解析

    vba - 禁用 Excel 中的编辑属性

    vba - 使用 Excel 中定义的范围,替换打开的 Word 文档中的 [文本]

    python - 如何构建多索引转换矩阵?

    python - 转置 pandas 数据框并垂直 append