ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 各位老师,这个表PQ怎么转换?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-11 22:42 | 显示全部楼层 |阅读模式
各位老师,这个表PQ怎么转换?谢谢啦。
image.png

数据.zip

7.69 KB, 下载次数: 41

TA的精华主题

TA的得分主题

发表于 2022-11-12 15:49 来自手机 | 显示全部楼层
create temp table aa as
select fillna(regexp2('姓名:(.*)',F_A,1)) 姓名,iif(regexp('科目|姓名',F_A),'',F_A) 科目,iif(F_A like '科目','',F_B) 成绩 from 正则表达式拆分学生成绩条并且填充姓名;
select * from aa where 科目!='';

Screenshot_2022-11-12-15-47-40-271_cn.uujian.browser.jpg

TA的精华主题

TA的得分主题

发表于 2022-11-12 16:25 | 显示全部楼层
笨方法

let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    更改的类型 = Table.TransformColumnTypes(源,{{"列1", type text}, {"列2", type text}}),

    已添加自定义 = Table.AddColumn(更改的类型, "姓名", each if [列2] is null then [列1] else null),
    向下填充 = Table.FillDown(已添加自定义,{"姓名"}),
    筛选的行 = Table.SelectRows(向下填充, each ([列2] <> null)),
    提升的标题 = Table.PromoteHeaders(筛选的行, [PromoteAllScalars=true]),
    更改的类型1 = Table.TransformColumnTypes(提升的标题,{{"科目", type text}, {"成绩", type text}, {"姓名:学生A", type text}}),
    筛选的行1 = Table.SelectRows(更改的类型1, each ([成绩] <> "成绩")),
    替换的值 = Table.ReplaceValue(筛选的行1,"姓名:","",Replacer.ReplaceText,{"姓名:学生A"}),
    重命名的列 = Table.RenameColumns(替换的值,{{"姓名:学生A", "姓名"}})
in
    重命名的列

TA的精华主题

TA的得分主题

发表于 2022-11-12 18:23 | 显示全部楼层
  1. let
  2.     Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Werp88tMJve/3zHq6dtnzKfMdlXSUlGJ1opWeL5/4fPY6IO9Zx4Tnu1eCxV6sX/tsWjtQzNxYzwAs8mzqBqA+oIilCVTkRfdGoDKgiIWFnilYBM0GJ6JsMMOwwcIS3QZLQ5BILAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
  3.     #"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
  4.     #"Grouped per student" = let delim = List.PositionOf(#"Added Index"[Column1], "姓名", 2, (x,y) => Text.Contains(x,y)) in Table.Group(#"Added Index", {"Index","Column1"}, {"Grp", each Table.PromoteHeaders(Table.Skip(_))}, 0, (x,y) => Byte.From(List.Contains(delim, y[Index]))),
  5.     #"Expanded Grp" = Table.ExpandTableColumn(#"Grouped per student", "Grp", {"科目", "成绩"}, {"科目", "成绩"}),
  6.     #"Extracted Text After Delimiter" = Table.TransformColumns(Table.RemoveColumns(#"Expanded Grp",{"Index"}), {{"Column1", each Text.AfterDelimiter(_, ":"), type text}})
  7. in
  8.     #"Extracted Text After Delimiter"
复制代码

TA的精华主题

TA的得分主题

发表于 2022-11-12 20:21 | 显示全部楼层
可做简单参考
111.png
222.png

转换.zip

16.69 KB, 下载次数: 9

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-12 22:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢各位老师

TA的精华主题

TA的得分主题

发表于 2022-11-14 01:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    自定义1 = Table.Group(Table.SelectRows(Table.FillDown(Table.AddColumn(源,"姓名",each  if [列1]=null then Text.AfterDelimiter([#"2022-1 某某中学X年级期中质量评估-3-学生成绩条"],":") else null),{"姓名"}),each [列1]<>null),"姓名",{"分组",each Table.PromoteHeaders(_)}),
    自定义2 = Table.Combine(List.Transform(自定义1[分组],each Table.RenameColumns(_,{List.Last(Table.ColumnNames(_)),"姓名"}))),
    重排序的列 = Table.ReorderColumns(自定义2,{"姓名", "科目", "成绩"})
in
    重排序的列
image.jpg

TA的精华主题

TA的得分主题

发表于 2022-11-14 08:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-17 20:35 | 显示全部楼层
用公式和代码都有难度,现在提供两种操作方法来实现:一种是增加条件列,另一种是拆分列。

达到效果的思路:拆分列1成“姓名”和“科目”列,然后按科目列筛选后,上载。

第一种方法:增加条件列:
数据加载后,用条件列:如果 列2 为 null ,返回列1,否则 返回 null
将生成的条件列 向下填充 ,用“” 替换 “姓名:” ,筛选列1中的具体科目数据 ,关闭上载。

第二种方法:拆分列:
用分隔符“:”拆分列1,生成的新列向下填充。筛选列1中的具体科目数据 ,关闭上载。

合并表格拆分-拆分列.zip

935.55 KB, 下载次数: 5

合并表格拆分-条件列.zip

936.6 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2022-11-17 20:37 | 显示全部楼层
做好的原文件上传,里面有两种方法的操作步骤

新建 Microsoft Excel Worksheet.zip

19.67 KB, 下载次数: 2

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

本版积分规则

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

GMT+8, 2024-12-27 04:05 , Processed in 0.048948 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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