ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于拆分请教

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-28 16:28 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
多行
A-B-C-D

M-N-P-Q


拆分为
A-B
B-C
C-D
M-N
N-P
P-Q

谢谢!

拆分.zip

11.04 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2024-10-28 16:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
image.png

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-10-28 18:22 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 cnmlgb9998 于 2024-10-28 19:44 编辑

先拆开,再用迭代 就行
捕获.JPG

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-10-28 21:10 来自手机 | 显示全部楼层
//select * from 原表;
cli_split_data~原表~-~组合;
select * from (
select 序号,组合||'-'||lead(组合) over (partition by 序号) 分段 from 原表split) where 分段 is not null; Screenshot_2024-10-28-21-09-01-883_com.mmbox.xbrowser.pro.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-10-28 22:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
                                    
  1. 供参考
复制代码
240.png

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-10-28 22:48 | 显示全部楼层
我觉得List.Generate函数更合适这个场景!
提供一个思路:
= List.Generate(()=>"A-B-C-D-E", each List.Count(Text.PositionOf(_,"-",2)) > 0 ,each Text.AfterDelimiter(_,"-"))
然后List.Transform遍历取值
= List.Transform(List.Generate(()=>"A-B-C-D-E", each List.Count(Text.PositionOf(_,"-",2)) > 0 ,each Text.AfterDelimiter(_,"-")), (x)=> Text.BeforeDelimiter(x,"-",1))

TA的精华主题

TA的得分主题

发表于 2024-10-29 10:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
贫民做法,一步步拆开来做:

let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    拆分 = Table.AddColumn(源, "拆分", each Text.Split([组合],"-")),
    去末位 = Table.AddColumn(拆分, "去末位", each List.RemoveLastN([拆分])),
    去首位 = Table.AddColumn(去末位, "去首位", each List.RemoveFirstN([拆分])),
    合并 = Table.AddColumn(去首位, "合并", each List.Zip({[去末位],[去首位]})),
    二次合并 = Table.AddColumn(合并, "再合并", (x)=>List.Transform(x[合并],each Text.Combine(_,"-"))),
    删除的列 = Table.RemoveColumns(二次合并,{"组合", "拆分", "去末位", "去首位", "合并"}),
    展开 = Table.ExpandListColumn(删除的列, "再合并")
in
    展开

TA的精华主题

TA的得分主题

发表于 2024-10-29 14:43 | 显示全部楼层
参照大神写的,其中辅助理解1和辅助理解2只是辅助理解使用,累计对这两步进行了简单合并。

let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    辅助理解1 = Text.Split(源[组合]{0},"-"),
    辅助理解2 = List.Accumulate({0..List.Count(辅助理解1)-2},{},(x,y)=>x&{Text.Combine({辅助理解1{y}}&{辅助理解1{y+1}},"-")}),
    累计 = Table.TransformColumns(源,{"组合",(z)=>List.Accumulate({0..List.Count(Text.Split(z,"-"))-2},{},(x,y)=>x&{Text.Combine({Text.Split(z,"-"){y}}&{Text.Split(z,"-"){y+1}},"-")})}),
    展开 = Table.ExpandListColumn(累计, "组合")
in
    展开

TA的精华主题

TA的得分主题

发表于 2024-10-29 16:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-10-29 16:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-1 10:23 , Processed in 0.050691 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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