Excel函数进阶必备的思维和套路有哪些?

通过一个简单的案例,我们来看看函数进阶必备的一些套路和处理思维!

我们看一个案例:计算一下每天的餐补金额

案例比较简单,我们来看一下大家一般的写法:

写法1:VLOOKUP开火车写法

=VLOOKUP(B2,$G$1:$H$7,2,)+VLOOKUP(C2,$G$1:$H$7,2,)+VLOOKUP(D2,$G$1:$H$7,2,)

以上写法比较基础,如果我们非要使用VLOOKUP来写,那么也可以使用第一参数数组化来处理!

写法2:VLOOKUP进阶写法

=SUM(VLOOKUP(T(IF({1},B2:D2)),$G$1:$H$7,2,))

在365版本中,第一参数已经支持数组,可以直接写!其他版本我们还需要使用三维降维来处理!

其实以上的问题,如果你对SUMIF比较熟悉,更好的处理方式是SUMIF,这也是我们今天的主角!

写法3:SUMF参数数组化

=SUM(SUMIF($G$2:$G$7,$B2:$D2,$H$2:$H$7))

我们看一下SUMIF数组化的进阶用法,如果没有餐补这一列,直接问题餐补最高是那一天,金额多少?怎么处理?

难度立马上去好几档!

进阶案例

=--MID(TEXT(MAX(MMULT(SUMIF(G2:G7,B2:D16,H2),{1;1;1})+A2:A16%%%),"000000.000000"),{8,1},6)

这个公式中有很多函数爱好者进阶必备的小技巧,小编带大家一起看一下(解析较长,看不动的同学可以直接跳过)

思路技巧解读

1、SUMIF参数对称性,SUMIF(G2:G7,B2:D16,H2) 公式中,第三参数我们之写了H2,为什么结果也是OK的呢?其实SUMIF会根据第三参数给定的起点,按照第一参数的区域大小,自动扩展和适应!在一些字符竞赛中经常会看到如上写法!

2、SUMIF结果如果是数组,尺寸由第二参数决定,第二参数可以是多行多列的区域或者常量数组!本案例中是三列多行的内存数组

3、内存数组如何需要聚合处理,基本上首先考虑使用MMULT!本案例中,我们想让内存数组的每一行相加,结果就是一列多行!对于MMULT非常轻松

MM函数详解教程:这个MM函数没你想的那么可爱

4、权重思维!本案例中,我们MM后的结果和数据源的行数是对称的,那么我们想要的结果包括最大值和对应的日期,所以最好能一次搞定,不能就需要获取行号,然后再去INDEX比较麻烦,此时都会考虑权重!

我们想要获取最大金额,金额是一个整数,我们在一个整数上添加一些小数并不会影响他们整数部分的大小比较,我们就是利用这点,把日期添加其中!

5、%%%是什么意思?其实是除以1000000的简写!为什么是三个,不是两个或者其他个数,因为日期是特殊的数值,从1900-1-1到指定日期的天数,目前日期一般是5位数值!所以我们只要超过5位就够了,所有选择6位,三个%!

6、经过以上的一些处理,我们就可以把最大值和日期都一起获取到!下面是如何分离的问题!

7、分离其实就是要获取到整数和小数部分就OK了,但是如果直接MOD和INT就太繁琐了!我们考虑直接来截取!小数部分是固定的6位,可以使用RIGHT从后面截取,但是整数部分不确定!怎么办?我们可以使用TEXT把数据格式化到指定的位数,整数给的位数超过数值会增加前导0,不影响结果!

如果你决定不够,可以添加足够长的位数!

8、长度规定后,我们就可以直接截取了,这里主要使用的是MID的数组用法,分别从第8位和第一位截取6个长度,当然未来你的前后截取长度不一样,也是可以通过第三参数数组来分别截取长度!基本不用担心!

最后得到了我们的结果!

以上公式临时所写,还有优化空间,函数爱好者可以进一步优化!

OK,我们就解析到这里,主要还是大家要掌握一些常规的处理思路和套路,比如内存数组如何处理和权重思路,是函数进阶必备知识!

(0)

相关推荐