欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路

每个人都不可避免地要和数字打交道。现实生活中,你对数字的敏感程度,有时候决定了你的成就高度。因此,拥有极好的数字处理能力是非常重要的。

今天的帖子向大家介绍了几种数字处理的例子。借助函数公式的帮助,我们能够快速地解决日常工作中我们可能会遇到的问题。

第一道题目

第二道题目

第三道题目

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操作问题时不再迷茫无助

我就知道你“在看”

推荐阅读