数据合并的问题

Power Query 安安羽羽 ⋅ 于 2023-12-22 16:40:34 ⋅ 最后回复由 cnbubble 2024-02-06 21:02:50 ⋅ 496 阅读

我有一个excel 文件,在一个sheet 里 按照从上往下的顺序显示了一个月30天或者31天的数据,但表头都没有对齐,如何快速整合成一个求和的表格,用query 或者excel 公式都可以,求方法。

file

回复数量: 1
  • cnbubble Excel、VBA、Power Query等
    2024-02-06 21:02:50

    使用Power Query 方式处理:
    导入数据后,打开高级编辑器,增加以下代码

    源 = Excel.Workbook(File.Contents("C:\Users\Administrator\Desktop\示例.xlsx"), null, true),
        Sheet1_Sheet = 源{[Item="Sheet1",Kind="Sheet"]}[Data],
        更改的类型 = Table.TransformColumnTypes(Sheet1_Sheet,{{"Column1", type any}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}}),
    
       //上面的为自动生成,下面为新增内容:
        表=更改的类型, //重命名,避免因为步骤名称不对,下面代码错误
        第一个日期 = Date.From(表{0}[Column1]),
        年 = Date.Year(第一个日期),
        月 = Date.Month(第一个日期),
        该月天数 = Date.DaysInMonth(第一个日期),
        日期所在行 = List.Transform({Date.Day(第一个日期)..该月天数}, (x)=>List.PositionOf(表[Column1],#date(年,月,x)) ),
        去掉找不到的行 = List.Select(日期所在行, each _ >-1),
    
        合并表格 = Table.Combine(List.Transform({0..List.Count(去掉找不到的行)-1},
            (x)=>let
               临时表=if x< List.Count(去掉找不到的行)-1 then 
                   Table.FirstN(Table.RemoveFirstN(表,去掉找不到的行{x}+1),去掉找不到的行{x+1}-去掉找不到的行{x}-1)
                 else
                    Table.RemoveFirstN(表,去掉找不到的行{x}+1),
               修改标题 =  Table.ReplaceMatchingRows(临时表,{{ 临时表{0}, 临时表{0} & [Column1="公司"] }}) ,
                 删空行 = Table.SelectRows(修改标题, each [Column1]<>null),
                 转置 = Table.Transpose(删空行),
                 删空列 = Table.SelectRows(转置, each [Column1]<>null),
                 转置恢复 = Table.Transpose(删空列),
                 提升的标题 = Table.PromoteHeaders(转置恢复, [PromoteAllScalars=true])
             in
                 提升的标题
    
    )),
        合并后标题 = Table.ColumnNames(合并表格),
        替换的值 = Table.ReplaceValue(合并表格,null,0,Replacer.ReplaceValue,合并后标题)
    in
        替换的值

    示例文件

    file

    处理结果:

    file

    最后选中第一列,右击——组合依据,依次对后面每一列添加求和聚合函数:

    file

    最后一步暂时没试出来怎么实现自动组合求和(也就是如何在标题名称不固定的情况下,如何写Table.Group方法!)

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter