ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] [求助]按文本拆分行(数字展开),谢谢!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-8-10 09:46 | 显示全部楼层 |阅读模式
问题描述:

想将文本单元格中1~4,拆分成1 2 3 4 这4行其他信息不变,列举了几个文本格式,还请老师帮忙,灰常感谢!
问题描述.png

求助:数字展开,拆分行.rar

9.09 KB, 下载次数: 25

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-10 14:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-8-10 16:45 | 显示全部楼层
    自定义1 = Table.ExpandListColumn(Table.AddColumn(更改的类型,"结果",each List.Transform(List.RemoveMatchingItems(Text.Split(Text.Trim([文本]),"]"),{""}),each Text.Remove(_,"["))),"结果")
    自定义3 = Table.AddColumn(自定义1,"轮次",each Text.Trim(Text.Middle([结果],Text.PositionOfAny([结果],{"白","夜"})+1,Text.Length([结果]))))
    自定义2 = Table.SplitColumn(自定义3,"结果",each Text.Split(_," "),2)
    已添加自定义 = Table.AddColumn(自定义2, "日期", each Text.From([年度])&"/"&[结果.1])
    自定义4 = Table.TransformColumns(Table.ExpandListColumn(Table.ExpandListColumn(Table.TransformColumns(已添加自定义,{"轮次",each List.Transform(Text.Split(Text.Replace(Text.Remove(Text.Start(_,Text.PositionOf(_,"#",1)+1),"#"),"~","..")," "),each Expression.Evaluate("{"& _ & "}"))}),"轮次"),"轮次"),{"轮次",each Text.From(_)&"#"})
    更改的类型1 = Table.TransformColumnTypes(自定义4,{{"日期", type date}})
    重命名的列 = Table.RenameColumns(更改的类型1,{{"结果.2", "白/夜"}})
    删除的列 = Table.RemoveColumns(重命名的列,{"结果.1"})
    重排序的列 = Table.ReorderColumns(删除的列,{"年度", "检测", "文本", "日期", "白/夜", "轮次"})
image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-10 16:59 | 显示全部楼层
let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    分组 = [a=Table.TransformColumns(源,{"文本",each List.Select(Text.SplitAny(_,"[]"),each _<>"" and _<>" " )}),b=Table.ExpandListColumn(a,"文本")],
    处理轮次 = [a=Table.SplitColumn(分组,"文本",each Text.Split(_," "),{"日期","白/夜","轮次"},null,0),b=Table.TransformColumns(a,{"轮次",each [m=List.Select(_,each Text.Contains(_,"#")),n=List.Transform(m,each Expression.Evaluate("{"&Text.Replace(Text.BeforeDelimiter(_,"#"),"~","..")&"}")),h=List.Transform(List.Combine(n),each Text.From(_)&"#")][h]}),c=Table.ExpandListColumn(b,"轮次")][c],
    更改日期类型 = Table.TransformColumnTypes(处理轮次,{{"日期", type date}})
in
    更改日期类型
image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-13 11:29 | 显示全部楼层
hbzql 发表于 2023-8-10 16:59
let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    分组 = [a=Table.TransformColumns( ...

老师您好!



在步骤分组到处理轮次时 提示无法将Record 转为Table,还请帮忙再看一下,谢谢!!

另外想请教下 分组里面的 a=    和 处理轮次里面的 a=   这两个a 是不同的吗?


新手的呆呆微笑!
图片.png

TA的精华主题

TA的得分主题

发表于 2023-8-13 15:35 来自手机 | 显示全部楼层
create temp table aa as
select 年度,检测,replace(replace(文本,'~','-'),'#','@') 文本 from 按文本拆分行;
cli_split_data~aa~\]|\[~文本;
//select *,udf_trim(文本)='' from aasplit ;
create temp table aasplit2 as
select 年度,检测,年度||'/'||regexp2('\d+\/\d+',文本) 日期,regexp2('白|夜',文本) `白/夜`,regreplace('^\[|(?<=@)[^@]*?$','',文本) 文本 from aasplit where udf_trim(文本)!='';
cli_split_data~aasplit2~(?<=@)\s~文本;
//select * from aasplit2split;
create temp table bb as
select *,regexp2('(?<=\s|^)\d+(-\d+)?(?=@)',文本) 轮次 from aasplit2split;
create temp table cc as
select 年度,检测,日期,`白/夜`,split_num(轮次) 轮次 from bb;
cli_split_data~cc~,~轮次;
select colIndex[1:4],轮次||'#' 轮次 from ccsplit;
Screenshot_2023-08-13-15-35-32-278_cn.uujian.browser.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-18 11:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. let
  2.     源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
  3.     自定义1 =
  4.         Table.ToList(
  5.             源,
  6.             each
  7.                 let
  8.                     A = List.Transform( List.RemoveItems( Text.Split( _{2}, "[" ), {""} ), (y)=> Text.Start( y, Text.PositionOf( y, "#", 1 ) ) ),
  9.                     B = List.Transform( A, (x)=> List.RemoveItems( Text.Split( x, " " ), {""} ) ),
  10.                     C =
  11.                         List.TransformMany(
  12.                             B,
  13.                             (o)=>
  14.                                 List.Combine(
  15.                                     List.Transform(
  16.                                         List.Skip( o, 2 ),
  17.                                         (t)=>
  18.                                             if Text.Contains( t, "~" )
  19.                                             then
  20.                                                 List.Transform(
  21.                                                     Expression.Evaluate( "{" & Text.Replace( t, "~", ".." ) & "}" ),
  22.                                                     (n)=> Text.From( n ) & "#"
  23.                                                 )
  24.                                             else { Text.Remove( t, "#" ) & "#" }
  25.                                     )
  26.                                 ),
  27.                             (x,y)=> List.FirstN( _, 2 ) & { Date.From( Text.From( _{0} ) & "/" & x{0} ), x{1} } & {y}
  28.                         )
  29.                 in
  30.                     C
  31.         ),
  32.     自定义2 =
  33.         Table.FromRows( List.Combine( 自定义1 ), {"年度","检测","日期","白/夜","轮次"} )
  34. in
  35.     自定义2
复制代码

图片.png

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-6-8 21:26 , Processed in 0.037260 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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