ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: pxy0409

[求助] 如何利用PQ整理不规范的源表?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-12-14 16:47 | 显示全部楼层
和楼上的方式不太一样。。尽量拆分后还原成表,比较没那么抽象 不过效率需要测试下才知道

整理不规范的源表.zip

32.09 KB, 下载次数: 9

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-14 21:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 pxy0409 于 2020-12-14 21:24 编辑
zhangmi 发表于 2020-12-14 14:26
我这个应该是最简单易懂,当然,语句啰嗦在所难免
这种写法更适合像我这样的初学者理解和学习,
不过在日期的处理上,跟我自己的处理一样,没有单独体现4号和5号的业务.
希望老师有空的时候,再帮忙调整一下吧,谢谢!
20201214212058.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-14 21:35 | 显示全部楼层
kirete 发表于 2020-12-14 16:47
和楼上的方式不太一样。。尽量拆分后还原成表,比较没那么抽象 不过效率需要测试下才知道

查询语句写得很有条理,这几天再研究和学习一下,谢谢相助!

TA的精华主题

TA的得分主题

发表于 2020-12-15 15:32 | 显示全部楼层
pxy0409 发表于 2020-12-14 21:01
这种写法更适合像我这样的初学者理解和学习,
不过在日期的处理上,跟我自己的处理一样,没有单独体现4号和5 ...

这样前面又得嵌套一个table.group或者table.splite,太难看了。
我也是新手,看着前面各位老师的代码在学习。上面老师写的就挺好

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-15 20:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 pxy0409 于 2020-12-15 20:26 编辑
zhangmi 发表于 2020-12-15 15:32
这样前面又得嵌套一个table.group或者table.splite,太难看了。
我也是新手,看着前面各位老师的代码在 ...

可惜用table.group写得,太过于复杂,我还搞不明白啊......

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-15 20:23 | 显示全部楼层
deadzlq 发表于 2020-12-13 21:45
PowerQuery参考解法

你好,能否解释一下Table.Group第3参数中,each [t, r]  [r]的含义?谢谢
1.jpg

TA的精华主题

TA的得分主题

发表于 2020-12-16 11:28 | 显示全部楼层
  1. // file
  2. let
  3.     Source = Table.FirstValue(Excel.CurrentWorkbook(){[Name="表1"]}[Content])
  4. in
  5.     Source

  6. // output
  7. let
  8.     Source = Excel.Workbook(File.Contents(file), null, true){[Item="源表",Kind="Sheet"]}[Data],
  9.     rows = Table.ToRows(Source)&{{""}},
  10.     fx = (x)=>let slist=List.Alternate(x, 1, 1, 1),
  11.                   sdate=slist{3}{0},
  12.                   repl= List.ReplaceRange(slist, 3, 1, {List.ReplaceRange(slist{3}, 0, 1, {"值"})})
  13.               in repl&{{"日期", sdate}},
  14.     acc = List.Accumulate(
  15.               rows,
  16.               {null, null, {}, {}},
  17.               (s,c)=>if s{0}=null and c{0}<>null
  18.                      then {c{0}, c{0}, { List.Skip(c)}, s{3}&
  19.                              { let lists=List.Split(List.Zip(s{2}), 8)
  20.                                 in List.Transform(
  21.                                       lists,
  22.                                       each Table.PromoteHeaders(
  23.                                               Table.FromColumns(
  24.                                                   fx(_)
  25.                                               )
  26.                                            )
  27.                                    )
  28.                              }
  29.                           }
  30.                      else {c{0}, s{1}, s{2}&{List.Skip(c)}, s{3}}  
  31.           ){3},
  32.     tbl = Table.Combine(List.Combine(acc)),
  33.     filter = Table.SelectRows(tbl, each ([姓名] <> null)),
  34.     result = Table.FillDown(filter, {"日期"})
  35. in
  36.     result
复制代码
可以试一下这个

样表.rar

31 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-16 12:01 | 显示全部楼层
deadzlq 发表于 2020-12-13 21:45
PowerQuery参考解法

继续请教老师:下图中的l用法没有看明白,能否解释一下?
20201216120014.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-16 12:03 | 显示全部楼层

谢谢关注!代码看起来很长,好像有点超出我的理解能力了,唉......

TA的精华主题

TA的得分主题

发表于 2020-12-16 13:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
公式好长啊。
1.jpg

样表.rar

41.07 KB, 下载次数: 2

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 16:28 , Processed in 0.044436 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表