送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
【置顶公众号】或者【设为星标】及时接收更新不迷路
小伙伴们啊,今天是周末,和大家分享一道烧脑的题目,祝大家周末愉快!题目要求如下。
该如何入手呢?思考十秒钟...
涉及到这样的题目,一定会用到MID函数。小伙伴们不要被这么长的一段公式给吓住了,其实它的逻辑思路非常简单。
在单元格D2中输入公式“=SUM(--MID(SUM(--MID(SUM(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),ROW(INDIRECT("1:"&LEN(SUM(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))))),1)),ROW(INDIRECT("1:"&LEN(SUM(--MID(SUM(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),ROW(INDIRECT("1:"&LEN(SUM(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))))),1))))),1))”,三键回车后并向下拖曳即可。
这个公式的核心思路就是:无论字符串的长度有多长,每一个位置上的数字相加,得到的结果再继续将每个位置上的数字相加。循环这样做,最多只需要3次,得到的结果就可以是个位数。这就是一个纯粹的数学题。
思路:
ROW(INDIRECT("1:"&LEN(A2)))部分,常用的套路,利用ROW函数和INDIRECT函数动态的得到字符串的长度
--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)部分,利用MID函数依次从每一个位置上提取长度为1的字符,并转化内数字型字符
SUM(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))部分,对拆分出来的数字求和。这是第一次求和的结果
接下来,以第一次求和的结果为对象,对其按照其长度来进行第二次拆分后并求和 的操作
第三次,以第二次求和的结果为对象,进行重复操作
小伙伴们可以动手试一试,看看能够得到什么样的结果!
上面的公式太长了。我们试着看看能不能有稍短一些的公式。
在单元格D2中输入公式“=SUM(IFERROR(1*MID(SUM(IFERROR(1*MID(MMULT(TRANSPOSE(ROW(INDIRECT("1:"&LEN(A2)))^0),1*MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),ROW($1:$9),1),)),{1,2},1),))”,三键回车并向下拖曳即可。
这个方法最大的亮点就是利用MMULT函数进行每个位置上的数字求和,从而大大缩短了公式的长度。
思路
ROW(INDIRECT("1:"&LEN(A2)))部分,同样是动态求得字符串的长度
ROW(INDIRECT("1:"&LEN(A2)))^0,将所有的数字都转换为1
TRANSPOSE(ROW(INDIRECT("1:"&LEN(A2)))^0)部分,将纵列方向的数组转换为横向方向的数组,并作为MMULT函数的第一个参数
1*MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)部分,依次从单元格A2中的字符串各个位置上开始提取长度为1的字符,转换为数值型数字后,作为MMULT函数的第二个参数
MMULT函数的求和结果就是各个位置上的数字的总和
同样的思路利用MID函数进行第二次和第三次操作
今天的这道题目有些难度,小伙伴们只要会套用即可。如果有问题可以私信我哦!
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”
联系客服