如何在表格的文本中 计算金额合计

Power Query txb ⋅ 于 2019-09-03 11:52:31 ⋅ 最后回复由 土豆先森 2020-04-08 14:10:20 ⋅ 2183 阅读

想在一个表中,每行有文本和数字混合,比如 “*400元,**300元”,想在这个表中增加一列 计算出“合计”700元,思路用Text.SplitAny 和List.transfrommany 作为核心来做,但不成功,求高手给方案!!

![]file(http://)

成为第一个点赞的人吧 :bowtie:
回复数量: 4
  • geyee
    2019-09-03 15:17:45

    该题识别为提取数字,不含小数点及千分位符等,可以考虑引入Web.Page正则查找等。其他解决方案可能用到Splitter.SplitTextByAnyDelimiter,Character.FromNumber,List.Accumulate,Expression.Evaluate等函数。一个适用部分情况的简单的解答为

     let
        源 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSjRU0lF6umn2846NTzs2PNm7wNjgaWvz+z09z2e1PF2y/OWM/U83THk6tcsEJKwUqwPUYQTU8Xz5+qcdbeYGMMUbdz9tXfF8QrOlhTlQ5HFDE0SpMVDpy0XtQCOAip7s7Hg6dZmZqbkJRNOTPb0vN7eYmcENNgGqfrZm+dMVjUDy2bR2MyMDHCpNgSpfrN8GdN3L9h5DA4iV4fmZqUYQZ8YCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [类型1 = _t, 数据 = _t]),
        求和 = Table.AddColumn(源, "合计", each List.Sum(List.Transform(Text.SplitAny([数据], Text.Remove([数据],{"0".."9"})),Number.From)))  
     in
        求和

    思路为字符按汉字、标点符号及其他除数字外的特殊符号的任意字符拆分,然后转换为数字再求和。
    其他情形,如有小数点等可能PQ表达式就复杂些。

  • deadzlq 无我,亦无期
    2019-09-03 20:11:42

    PQ参考解法

    file

  • txb
    2019-09-04 17:33:54

    看了回复,真乃高人也!!

  • 土豆先森 Excelfocus
    2020-04-08 14:10:20

    上一个有点问题。

    let
        源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
        合计 = Table.AddColumn(源,
                                 "合计",
                                 each 
                                 List.Sum(
                                           List.Transform(Text.Split(_[数据],"元"),
                                                            (x)=>List.Max(List.Transform({0..15},
                                                            (y)=>try Number.From(Text.End(x,y)) otherwise null ))
                                                          )
                                          )
                                  )
    in
        合计
暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter