美文网首页PowerQueryPowerBI朋友圈(P圈)
【案例】求单元格中的数字之和

【案例】求单元格中的数字之和

作者: PowerQuery | 来源:发表于2017-06-12 14:51 被阅读209次

此案例来源于雷友会QQ群(198086726)。源文件偷懒不给出了。

需求

单元格中的值由为长度不等的数字组成,要求求出每个单元格的所有数字之和,如下图:

单元格中的数字.png

比如,第一行的结果是6+2+2+5+7+5+7+6+7+6+3+4+2+1+2+7=72,以此类推。

SumUpAllNumbers.png

分析

解决这个问题的思路是怎么把单元格的内容拆分为独立的数字,否则无法求和。
一旦涉及到拆分,我们首先想到的是分列,这就是群里“新云”给出的方法一【按位置分列版】。
不过我这两天在啃Python,里边提到文本操作时,可以用list()函数把单词拆分为由字母组成的list,如list(wanght)=['w','a','n','g','h','t']。我在群里瞄见这个例子后,突发奇想,PowerQuery会不会有类似功能的函数呢?打开函数参考,一个一个找,果然被我找到了Text.ToList()这个函数,它起的作用和Python中的list()一模一样。所以这就是方法二【Text2List版】。

按位置分列求和

let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
复制的列 = Table.DuplicateColumn(源, "数字", "numbers"),
用位置分列 = Table.SplitColumn(复制的列,"numbers",Splitter.SplitTextByRepeatedLengths(1),{"数字 - 复制.1", "数字 - 复制.2", "数字 - 复制.3", "数字 - 复制.4", "数字 - 复制.5", "数字 - 复制.6", "数字 - 复制.7", "数字 - 复制.8", "数字 - 复制.9", "数字 - 复制.10", "数字 - 复制.11", "数字 - 复制.12", "数字 - 复制.13", "数字 - 复制.14", "数字 - 复制.15", "数字 - 复制.16", "数字 - 复制.17"}),
逆透视的其他列 = Table.UnpivotOtherColumns(用位置分列, {"数字"}, "属性", "值"),
更改的类型 = Table.TransformColumnTypes(逆透视的其他列,{{"值", Currency.Type}}),
分组的行 = Table.Group(更改的类型, {"数字"}, {{"求和", each List.Sum([值]), type number}})
in
分组的行

Text2List之后求和

let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
复制的列 = Table.DuplicateColumn(源, "数字", "numbers"),
文本到List = Table.AddColumn(复制的列, "list", each Text.ToList([numbers])),
ListSum求和 = Table.AddColumn(文本到List, "求和", each List.Sum(List.Transform([list],each Number.From(_)))),
删除的列 = Table.RemoveColumns(ListSum求和,{"numbers", "list"})
in
删除的列

总结与反思

观察两个方法,发现都用了List.Sum()这个函数。所以,这个函数是处理这类求和问题的关键,就是把求和对象拆解为list,然后来求和。而得到一个list的方法是多种多样的。就我个人而言,更喜欢我自己找到的Text2List方法,因为这个只涉及Text.ToList()和List.Sum()这两个函数,而【按位置分列求和】涉及到复杂的分列、逆透视和分组操作。

这个例子还可以有多种变形,比如有些人喜欢把手机号码的各组成数字求和,或者把自己名字的拼音字母求和等。

相关文章

  • 【案例】求单元格中的数字之和

    此案例来源于雷友会QQ群(198086726)。源文件偷懒不给出了。 需求 单元格中的值由为长度不等的数字组成,要...

  • 数学和三角函数之SUM

    SUM函数主要作用是计算数字之和,返回某一单元格区域中数字、逻辑值及数字的文本表达式之和。本文介绍Microsof...

  • SUM函数,你真的会用吗?

    SUM函数主要作用是计算数字之和,返回某一单元格区域中数字、逻辑值及数字的文本表达式之和,今天给大家介绍SUM函数...

  • SUM函数,80%的人不知道的用法?

    SUM函数主要作用是计算数字之和,返回某一单元格区域中数字、逻辑值及数字的文本表达式之和,今天给大家介绍SUM函数...

  • 2019-01-22

    求和函数 sum,sumif,sumifs SUM函数指的是返回某一单元格区域中数字、逻辑值及数字的文本表达式之和...

  • Excel-lookup求单元格区域中汉字对应的上一行数字

    求单元格区域中,汉字所在的单元格对应的上一个单元格的值,如果是汉字,则返回0,如果是数字,则返回数字。 公式说明:...

  • Java实例-数据结构

    1、Java 实例 – 数字求和运算:使用do...while结构求0~100的整数数字之和 public cla...

  • 女儿数学-求所有数字之和-2020-12-13

    题目 求2000 ~ 3000这1001个连续自然数的全部数字之和。 解答 先求2000 ~ 2999这1000个...

  • Java数据结构

    Java 实例 - 数字求和运算 以下实例演示了使用do...while结构求0~100的整数数字之和: 编译后的...

  • excel 规划求解学习

    怎么规划求解 得到最接近目标值单元格数据之和 怎么规划求解 得到最接近目标值单元格数据之和 7 分步阅读 本次介绍...

网友评论

    本文标题:【案例】求单元格中的数字之和

    本文链接:https://www.haomeiwen.com/subject/dbylqxtx.html