一列转化一个字符串_从Excel到Power:取字符串中多个数值的最后一位求合计

你好,我是小必,感谢与你在这里相遇。

昨天在头条号上看到了一位作者更新了这道题目。练手题很好。 要求:提取每行字符串中的数值,然后对数值的最后一位进行求和。这道题目在实际的应用中没有什么意义,但是可以用来练习Excel Power Query。 6d648c300ab13a7f6bec53845ff67228.png 即第一行为:3+3+3=9;第二行为3+2+2=7,依次类推…… 原作者的思路是:先添加一个索引列,然后再对字符串进行【从非数字到数字进行拆分】的功能操作,然后再修改公式,再次进行逆透视,最后对索引进行一次分即可。 对于上面的这个题目,可以使用M公式一步到步更加地简单快捷。主要有解题过程与思路为。 首先,添加一列,使用汉字列表与英文字符列表对“内容”列进行拆分,使用Text.SplitAny函数与Text.Combine函数相结合。 由于使用汉字列表,所以考虑到效率问题,加一个List.Buffer用来提高效率。
= Table.AddColumn(源,"每个数字的最后一位和",each       Text.SplitAny([内容],Text.Combine(            List.Buffer({"一".."龟","A".."z"}))))

6d13619e68a0a2bb15ca820e69dc3bb7.png

其次,筛选掉每个List中的空值,可以使用List.Select函数。如图所示。
= Table.AddColumn(源,"每个数字的最后一位和",each       List.Select(Text.SplitAny([内容],          Text.Combine(              List.Buffer({"一".."龟","A".."z"}))),each _<>""))

cc153bcd77d34d9982a58ccedb924b3f.png

遍历每个List,使用Text.End函数提取最后一位后,再将其转化为数值。
= Table.AddColumn(源,"每个数字的最后一位和",each     List.Transform(List.Select(        Text.SplitAny([内容],Text.Combine(            List.Buffer({"一".."龟","A".."z"}))),each _<>""),            each Number.From(Text.End(_,1)) ))

cf9f56f82ecbae0fc58ff7daf488e867.png

最后使用List.Sum对其进行求和即可。 完整的代码为:

f49da3bb01550156fa3c732a4d6ebb98.png

我是小必,期待下次与您相遇。

78ef48cd5649f5fe465e1f136b6eb87c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值