说来比较简单,但是这其中的原理却很少有人去探究,只是记住了这个用法搬来套用。其实也无可厚非的,很多学习函数的朋友,也都是先从记住函数,慢慢再来探究其本质的。
但是大家一定要记住,如果要活学活用Excel函数,就一定要想着去追寻其根本的内容,只有知道了原理,才可以用的更加灵活。
一、{1,0}只是一个数列
单纯的把{1,0}这个格式拿出来,它只是一个数列而已,就像VBA中的数组一样,是把多个元素放到了一个{}中,可以在计算中统一使用,并被逐个计算的过程。
我们来一起通过一个例子来理解一下:
通过{1,0,1}这个结构,把每行中的第2个元素归零,这样我们就计算出了A列和C列的和。同理,我们如果用{0,1,1}的话,就是计算出B、C两列的和。最后再以数组函数结束,就形成了,每行内容分别乘以数列中的0或1,就得到了新的一个数列,然后再按照我们的需求得到结果就好了。
那么还是上例的内容,如果我们需要把偶数行的数据求和怎么办呢?如下:
意思都是一样的,这里就要注意两点内容了:
●在数列中,“英文的逗号”代表同行转右列;“英文的分号”代表同列换下行
●使用数列参与计算的时候,切记要和对应的数据源行数或列数相同
二、用其他的方式得到{1,0}结构
{1,0}结构未必一定要手动添加,可且,手动添加还要数对应的区域行列的数量,比较繁琐。所以我们可以考虑是不是可以有其他的方式能够得到一组{1,0}结构呢?估计有的表友应该想到了,其实1或者0,就是逻辑值的对应数字。
在这里有必要和大家说一下,所有的比较运算符都有返回值,返回值即为逻辑值!那么比较运算符都有什么呢?“= < > <= >= <>”就这6个,就这6个简单的符号就会让你的函数神奇起来!
虽说常规用法可能更能让大家接受,但是今天的内容主要目的还是希望能够给大家拓宽一些函数使用的思路。
那么还是上面的例子,我们来做一个“小于150”或者“大于280”的数据求和,又该怎么操作呢?
这个公式就是利用了比较运算符的返回值(True、False)形成的1或者0组成了数列,再乘以数据源形成新的数列,进行的求和运算。我们可以用“公式求值”来辅助理解一下。
如果我们可以理解了上面的例子,大家也可以尝试着去理解Sumproduct的多条件、Lookup的二分法、万金油函数等等一些高级函数的用法。然后就可以自己去想一些可以用{1,0}结构解决问题的思路了。
三、为什么{1,0}结构很多情况下都是和If函数连用
作为{1,0}结构,在很多情况下都是和If函数一起连用,其实这和If函数的语法结构是有关系的。
If(条件,True_value,False_value)
这就是If函数的语法结构,在让我们看看最开始的例子:
=VLOOKUP(B16,IF({1,0},C2:C12,B2:B12),2,0)
这个函数的结构,就是利用True(1)、False(2)的原理,把C2:C12放到数列的第一列中,将B2:B12放到数列的第二列中,这样形成一个新的数据源,再用Vlookup函数正常引用就得到了正确的返回值。
编后语:
我们经常会利用If({1,0})这样的结构,放入到一个运算过程中,帮助我们有据的甄选数据,进行一些复杂的运算过程。
大部分的时候数据会有卡顿的现象,这个是因为函数的运行原理是从硬盘导入内存中计算,当数据较多时,转移的时间也会增加,这样就有了卡顿的现象,所以如果你不忙了,我们还是需要知道一些VBA的解题方法,来弥补这方面的不足,如果有兴趣的表友,可以通过公众号的“联系我们”来找到我。
如果上面的内容对您还有帮助,或者觉得作者比较用心。可以关注、评论、留言、转发“E图表述”,便于您继续观阅和浏览往期的“Excel干货分享”。微信公众号:“E图表述”或者“Excel_Easy”