欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
每个人都不可避免地要和数字打交道。现实生活中,你对数字的敏感程度,有时候决定了你的成就高度。因此,拥有极好的数字处理能力是非常重要的。
今天的帖子向大家介绍了几种数字处理的例子。借助函数公式的帮助,我们能够快速地解决日常工作中我们可能会遇到的问题。
第一道题目
第二道题目
第三道题目
01
技巧一
在单元格C2中输入下列公式,三键回车并向下拖曳即可。
=SUM(--(IF(MID(A3,N(IF({1},ROW($1:$7))),1)="",,MID(A3,N(IF({1},ROW($1:$7))),1))))
思路:
MID(A3,N(IF({1},ROW($1:$7))),1)部分,从单元格A3的第1、2、3...、7个字符开始,依次提取一个字符。这里N(IF({1},ROW($1:$7)))是用N函数做了降维处理
利用IF函数做一个逻辑判断,对于提取出的字符,如果是空字符,就将它们替换为0
减负运算后利用SUM函数求和
02
技巧二
在单元格D3中输入下列公式,三键回车并向下拖曳即可。
=SUM(--(0&MID(A3,N(IF({1},ROW($1:$7))),1)))
思路:
这里要注意一点,0&部分是利用0来处理了提取字符为空,将它们转变为0。
这个函数也可以写成下面这样,这是一个普通公式,不需要三键。
=SUMPRODUCT(--MID(A3,ROW(INDIRECT("1:"&LEN(A3))),1))
公式中ROW(INDIRECT("1:"&LEN(A3)))依据字符串的长度来提取字符,避免了提前到空字符的情况,因此也就不需要用0&来规避了。
03
技巧三
在单元格F3中输入下列公式,三键回车并向下拖曳即可。
=SUM(INT(MOD(A3,10^ROW(INDIRECT(1&":"&LEN(A3))))/(10^(ROW(INDIRECT(1&":"&LEN(A3)))-1))))
思路:
MOD(A3,10^ROW(INDIRECT(1&":"&LEN(A3))))部分,用单元格A3去分别除以10、100、1000、10000的余数。
10^ROW(INDIRECT(1&":"&LEN(A3)))的结果是{10;100;1000;10000}。这部分最后的结果是{9;49;649;3649}
(10^(ROW(INDIRECT(1&":"&LEN(A3)))-1))这部分,创建了一个内存数组{1;10;100;1000}
上述两部分相除,得到{9;4.9;6.49;3.649},通过INT函数向下取整后利用SUM函数求和
04
技巧四
在单元格E3中输入下列公式,三键回车并向下拖曳即可。
=MMULT(A3:C3,10^(3-ROW($1:$3)))
思路:
10^(3-ROW($1:$3))部分,创建一个内存数组{100;10;1},分别对应百位、十位和各位
利用MMULT函数求矩阵积
05
技巧五
这个更加简单,不需要过多解释。
06
技巧六
在单元格J2中输入下列公式,三键回车并向下拖曳即可。
=MID(SUM(IFERROR(SMALL(IF(MMULT(1-ISERR(FIND(ROW($1:$10)-1,RIGHT(A2:H2))),ROW($1:$8)^0),ROW($1:$10)-1),ROW($1:$10))/10^ROW($1:$10),"")),3,9)
思路:
FIND(ROW($1:$10)-1,RIGHT(A2:H2))部分,在提取出来的尾数中(RIGHT(A2:H2))查找1-9(ROW($1:$10)-1)
ISERR(FIND(ROW($1:$10)-1,RIGHT(A2:H2)))部分将错误值转换为TRUE,数字转换为FALSE
1-ISERR(FIND(ROW($1:$10)-1,RIGHT(A2:H2)))部分,其含义是将查找到的数字转换为TRUE(0),错误值转换为FALSE(1)
MMULT(1-ISERR(FIND(ROW($1:$10)-1,RIGHT(A2:H2))),ROW($1:$8)^0)部分,利用MMULT函数对查找到的数字的个数求和,结果为{1;1;0;1;0;0;4;1;0;0}。在这个步骤中剔除了重复数字。请注意结果中的“4”,表示“6”这个数字共找到了4次
IF(MMULT(1-ISERR(FIND(ROW($1:$10)-1,RIGHT(A2:H2))),ROW($1:$8)^0),ROW($1:$10)-1)部分,返回对应的数字,结果为{0;1;FALSE;3;FALSE;FALSE;6;7;FALSE;FALSE}
SMALL(IF(MMULT(1-ISERR(FIND(ROW($1:$10)-1,RIGHT(A2:H2))),ROW($1:$8)^0),ROW($1:$10)-1),ROW($1:$10))部分,依次提取最小值,其结果为{0;1;3;6;7;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!}
将上面的结果除以{10;100;1000;10000;100000;1000000;10000000;100000000;1000000000;10000000000}(10^ROW($1:$10)),得到的结果是{0;0.01;0.003;0.0006;0.00007;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!}
利用IFERROR函数屏蔽错误后,再用SUM函数求和,其结果为0.01367
利用MID函数提取最终的结果
这个例子中最关键的步骤是利用MMULT函数去重!
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”