表格转换

Power Pivot 明仔 ⋅ 于 2018-11-28 21:38:01 ⋅ 最后回复由 明仔 2019-02-27 22:26:50 ⋅ 2822 阅读

file

一起建设一个专业的 Power BI 社区

最佳答案
  • 飞天篮球 Talk is cheap, show me your code.
    2018-11-29 12:11:08

    用Power Query解,供参考...

    1、首列中的每个日期如果是标准的日期格式,那"变形"这一步最后的

    (x,y)=>Number.From(not (try Date.From(y))[HasError]) 可以改为

    (x,y)=>Number.From(y is datetime)

    2、最后一步“输出”的作用是把3列日期转换为日期格式,避免加载到表的时候日期变成数字。
    这一步可以省略,等加载到表后,把那3列日期设置单元格格式为日期格式。

    let
        源   = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    
        变形 = Table.Combine( 
                            Table.Group( 源, 
                                         "商品编号",
                                         { "a", each #table( {"录入日期","录入单号","门店","仓位"}
                                                              &
                                                              Table.ColumnNames(源),
    
                                                              List.Transform( List.Skip(Table.ToRows(_),4),  
                                                                              (z)=>List.FirstN([商品编号],4)&z) ) },
                                         0,
                                         (x,y)=>Number.From(not (try Date.From(y))[HasError]) ) [a]
                           ),
    
        输出 = Table.TransformColumns( 变形,
                                       List.Transform( {"录入日期","生产日期","到期日期"},
                                                        each {_,Date.From} ) 
                                     )
    
    in
    
        输出
回复数量: 5
  • Alex MOD 社区清洁工
    2018-11-29 11:14:08

    传个附件吧,上传到网盘分享链接

  • 飞天篮球 Talk is cheap, show me your code.
    2018-11-29 12:11:08

    用Power Query解,供参考...

    1、首列中的每个日期如果是标准的日期格式,那"变形"这一步最后的

    (x,y)=>Number.From(not (try Date.From(y))[HasError]) 可以改为

    (x,y)=>Number.From(y is datetime)

    2、最后一步“输出”的作用是把3列日期转换为日期格式,避免加载到表的时候日期变成数字。
    这一步可以省略,等加载到表后,把那3列日期设置单元格格式为日期格式。

    let
        源   = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    
        变形 = Table.Combine( 
                            Table.Group( 源, 
                                         "商品编号",
                                         { "a", each #table( {"录入日期","录入单号","门店","仓位"}
                                                              &
                                                              Table.ColumnNames(源),
    
                                                              List.Transform( List.Skip(Table.ToRows(_),4),  
                                                                              (z)=>List.FirstN([商品编号],4)&z) ) },
                                         0,
                                         (x,y)=>Number.From(not (try Date.From(y))[HasError]) ) [a]
                           ),
    
        输出 = Table.TransformColumns( 变形,
                                       List.Transform( {"录入日期","生产日期","到期日期"},
                                                        each {_,Date.From} ) 
                                     )
    
    in
    
        输出
  • 明仔
    2019-02-27 14:37:25

    @飞天篮球 (x,y)=>Number.From(not (try Date.From(y))[HasError]) 这段代表什么我去掉这段之后Table.Column 返回的值全是null

  • 飞天篮球 Talk is cheap, show me your code.
    2019-02-27 21:10:49

    @明仔
    那部分是Table.Group分组的第五参数,不能省略。

  • 明仔
    2019-02-27 22:26:50

    @飞天篮球 最后一个参数不是局部分组的设置?我看你那段代码应该是设置日期格式的,我就删掉这段全是空Table,能拜托您能分享一下思路吗?

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