ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请帮忙写下代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-1-22 20:29 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
根据各个序列号,写出对应的发票号码,要求:连续的发票号码用"-"连接,不连续的发票号码用","连接。 请大神帮帮忙吧 image.png image.png

请教.zip

9.99 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2021-1-23 00:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
PowerQuery参考解法
QQ截图20210123004355.png

请教.zip

15.54 KB, 下载次数: 9

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-1-23 09:27 | 显示全部楼层
本帖最后由 ThxAlot 于 2021-1-23 15:51 编辑

我也来个纯属自娱自乐的
  1. let
  2.     Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTIwMja1VIrVgfPMDFB4hsg8c3MUngWY5wTlQUxxhvAsDFB4hig8IzDPBcozRuGZoPCANsQCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [SN = _t, INV = _t]),
  3.     #"Grouped Rows" = Table.Group(Source,  {"SN"},
  4.         {{"All", each
  5.             let
  6.                 lst = [INV],
  7.                 lst_num = List.Sort(List.Transform(lst, Number.From), Order.Ascending)
  8.             in
  9.                 List.Accumulate(lst, {}, (s,c)=>if List.Contains(lst_num, Number.From(c)-1) then List.RemoveLastN(s,1) & {s{List.Count(s)-1}&{c}} else s&{{c}})
  10.         }}),
  11.     #"Expanded Each List" = Table.TransformColumns(#"Grouped Rows", {"All", each List.Transform(_, each if List.Count(_)>1 then Text.From(List.Min(_))&"-"&Text.From(List.Max(_)) else Text.From(_{0}))}),
  12.     #"Extracted Values" = Table.TransformColumns(#"Expanded Each List", {"All", each Text.Combine(List.Transform(_, Text.From), ", "), type text})
  13. in
  14.     #"Extracted Values"
复制代码
image.png

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2021-1-25 08:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
let
    源 = Excel.CurrentWorkbook(){[Name="表_2"]}[Content],
    自定义1 =
        Table.Group(
            源,
            "序列号",
            {
                "发票号码",
                each
                    List.Accumulate(
                        [发票号码] & {""},
                        { "", "", "" },
                        (x,y)=>
                            if
                                x{1} = "" and x{2} = ""
                            then
                                { x{0}, y, y }
                            else if
                                Number.From( y ) - Number.From( x{2} ) = 1
                            then
                                { x{0}, x{1}, y }
                            else
                                {
                                    Text.Trim(
                                        x{0} & "," & x{1} &
                                        { "-" & x{2}, "" }{ Byte.From( x{1} = x{2} ) },
                                        ","
                                    ),
                                    y,
                                    y
                                }
                    ){0}
            }
        )
in
    自定义1

TA的精华主题

TA的得分主题

发表于 2021-1-27 17:21 | 显示全部楼层
也试着做做
= Table.Group(源, {"序列号"}, {{"发票号码", each
                [m=Table.AddIndexColumn(_,"序号",0),
                 n=Table.AddColumn(m,"con",each try if Number.From([发票号码])-Number.From(m[发票号码]
                    {[序号]-1})=1 then 0 else 1  otherwise 1),
                 o=Text.Combine(Table.Group(n,{"con"},{"合并",each Text.Combine([发票号码],"-")},0,(x,y)
                       =>Number.From(y=x))[合并],",")
                 ][o]}})

TA的精华主题

TA的得分主题

发表于 2021-1-27 18:03 | 显示全部楼层
let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    分组 = Table.Group(源, {"序列号"}, {{"发票号码", each
                [m=Table.AddIndexColumn(_,"序号",0),
                 n=Table.AddColumn(m,"con",each try if Number.From([发票号码])-Number.From(m[发票号码]
                    {[序号]-1})=1 then 0 else 1  otherwise 1),
                 o=Text.Combine(Table.Group(n,{"con"},{"合并",each
                                                        if   List.Count([发票号码])>1
                                                        then List.First([发票号码])&"-"&List.Last([发票号码])
                                                        else [发票号码]{0}},
                               0,(x,y)=>Number.From(y=x))[合并],",")
                 ][o]}})
in
    分组
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-20 11:57 , Processed in 0.040274 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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