本文目标:
1、 理解excel软件背后数据处理的基本原理;
2、 搞懂excel数组公式原理,并会灵活运用,放大自己数据处理基本技能
网络上很多Excel教程,为了便于读者理解,将数组公式和大括号即“{}”进行对等,或者ctrl+alt+enter进行对等,这样对于很多刚刚接触excel这一强大的数据处理工具的人来说,能够快速上手。但从数组公式计算原理,哪些公式支持数组公式,如何更好的利用数组公式,支持自己的工作来说,增加了理解难度。为了便于后文概念的理解,这里插入一个重要的概念,excel基本数据类型。
Excel表格之中数据主要包括:
1、 数值类型 例如“123.456”就是一种数值类型,需要注意的excel之中时间类型的数据也是数值类型,这就是为什么,将时间类型的数据进行值粘贴后,结果变成了数值,还要进行时间格式设置的原因;
2、 字符型 该种类型很好理解,中文汉字、英文字符,各种符号都是字符型,就连平时看不见的空格也是字符型,咱中国人都知道汉字是象形文字,它是一种符号,汉字“一”是一种符号,同样它也有数值概念,阿拉伯数值也可以作为一种符号,总之是世间可以看见万物都可以作为符号。
3、布尔型excel之中只有两种TRUE和FALSE对应汉字“真”和“假”很好理解
4、空 也很好理解,就是excel单元格内什么也没有,这里需要注意的是和空字符的区别,同时需要注意的是excel之中空在有些场合对应的是数值类型的0。
5、错误类型,这种数据类型比较少见,例如当excel公式里面出现例如1/0情况时,会有#DIV/0!以“#”符号开头的结果,这样类型的数据就是错误类型,需要注意的是和字符串类型的区别。
上述的各种数据类型,通过肉眼观察通常情况下很容易混淆,可通过type函数进行判断。例如字符型返回结果是2,布尔型是4。
数据类型数据公式返回结果
在这里有很多朋友,会举起手来,抢答我还能够通过单元格格式进行判断。这里先讲个案例吧。李玉刚是现阶段很有名的花旦,大家都知道他本尊是纯爷们,但一上舞台,他能够比女人更妩媚,数据类型好比李玉刚本尊,单元格格式好比上台艺术表演,只是表象,为了某种需要的设定,12345数值类型,能够通过单元格设置显示为1.23万,但它还是数值类型,参与数值计算,数值43101能够设定单元格格式,让它显示为2018-1-1。单元格格式设定是很大的一块内容,后续将会安排文章进行讲解,这里不做展开了。这里需要给他家灌输一个观点,excel是一种软件,excel的数据类型是给电脑看的,excel各种数据的处理都是基于这些基础的数据类型上进行处理的;单元格格式设定是给人看,便于人的理解。该种观念将会存在于后续整个系列文章,希望这个系列文章后,大家能够培养这样的观念。
我们再回到数组公式这条轨道上来,如果借用在计算机软件领域数组概念,数组表示的是一组相同类型数据的区块。Excel之中“数组公式”因为它是普通大众的应用的公式,它和程序员接触的数组概念有相似的地方,也有不同的地方。对于学习excel工具的人来说,不用去纠结其中的差别。微软提出数组公式的概念,目的在于丰富excel公式的处理能力和应用场景。举个例子,excel之中的LEN()函数,它功能用于计算“字符”的长度,如果是空、数值和真假类型的数据,它先将这些类型的数据转化为字符类型,再计算其长度。它的参数会有两种情况,例如如果是一个单元格,那它就计算长度,并将结果返回回来,如果是一片区域单元格呢?第二种情况就涉及到本文的主题“数组公式”。
本文这里要提出一个观点,就是excel之中“数组”无处不在,只是它静静的,默默的在那里替您做了很多的事情,{}和ctrl+alt+enter好比公司那些能说会道的,做了一部分的工作,将整个功劳揽到自己的头上的那个人。
excel之中,一列单元格(例如A1:A5),它是一组相同类型的内容,他是数组(暂且这么认为,实际上有个转化过程,后文说明怎么转化的),假如=sum(A1:A5)函数对这列内容进行求和,它会返回最终的这些数据的内容的和,而且只有一个结果。你按不按ctrl+alt+enter组合键,对他没有任何影响;=sum({1,2,3,4,5})这样的公式,它也会返回一个结果,而且你按不按ctrl+alt+enter对他的结果没有任何影响。这里可能就有疑问了,这里需要告诉您的是SUM函数是支持数组公式的,那{}和ctrl+alt+enter这里发挥了怎样的作用了?
针对上述疑问,这里要告诉大家的是,“数组”在上述各种情况都发挥的作用,按了组合键情况,为了区别没按组合键,把它称为“数组公式”。上述案例比较特殊,都能返回相同且正确的结果,那大家就好奇了,那组合键在数组公式之中扮演了什么样的角色呢!可以告诉大家的是组合键在“数组公式”这个特殊公式类别之中扮演者“导演”角色,它的戏路将一步步给您解开。
大学线性代数数组概念大家都了解,如果两个同形数组相减就是对应位置的元素相减,其结果也是一个同形的数组。=A1:A5-B1:B5,如果将结果放置C1:C5单元格,并且使用组合键的话,其情形和线性代数的数组概念完全吻合。如果不按组合键,您会发现其结果和当前活动单元格的位置有很大关系,它只返回当前活动单元格同行的数据计算结果,如果当前单元格的行和公式应用区域的行不对应就直接返回错误值了,这也是网络教程告诉您如果不按组合键,它就返回错误值的原因所在,因为这些文章的案例,都是不在同行引用的,所以返回错误值,如果放在同行的话,它还是有结果的,只是这个结果,不是您想要的结果。针对这些规律给出以下结论:
1、 Excel 如果一个区域是一行或者一列的话,不按组合键,它将取公式所在单元格对应行或者列的内容进行计算,如果区域是二维区域,不按组合键,它将取用公式所在单元格对应行和列的数据进行计算;
2、Excel 如果公式参数是常量数组例如{1,2,3,4,5},如果不按组合键,所有的数据都参加计算,但公式计算结果只返回了结果数组的第一个元素;
3、 如果是引用是单元格区域和常量数组组合使用,如果不按组合键,引用区域提取的数据和常量数组相乘,这点类似线性代数数组乘以一个系数,但公式计算结果只返回了结果数组的第一个元素;
4、 Ctrl+alt+enter组合键,相当于给excel一个通知,告诉excel软件将引用的单元格区域转化为常量数组,并参加计算,如果无组合键,Excel只会按照情况“1”的规则取一个数据,下图是一个例子,大家可以练习试试。
以下给出一个excel公式的数据取用转化规则,虽然这不一定符合excel软件背后的程序规则,但能够方便大家理解。对于Excel软件来说,如果公式是一个引用区域,如果无组合键通知,则软件将公式所在单元格对应行或者列的一个数据参加计算,如果有组合键通知,则会取出整个引用区域内的数据作为一个常量数组。所以有组合键的情况下,不管公式的参数是引用,还是常量数组,最终都变成了常量数组的计算问题了,对于无组合键的情况,也可以理解为一种特殊形式的常量数组了,这就是前文之中说的excel公式之中“数组”概念无处不在的原因了。所以ctrl+alt+enter组合键相当于,在excel公式之中单元格引用区域数据取用规则中扮演了“导演”角色。
到这里您可能又有疑问了,那为什么公式=SUM(A1:A5),结果都是按照数组公式的结果返回的呢。这里需要跟大家说明的是,excel公式可以包含数据(例如A1:A5),运算符(例如+ - * 、)和预定义函数。Excel预定义函数本身对其参数的取用也有它自己的规则,而且该规则要优先于ctrl+alt+enter组合键。SUM函数将其内部的单元格区域作为一个数组来看待的。Excel之中引用频率很高的VLOOKUP函数就是个很好的例子,在一般场合使用中,第一个参数是一个单元格,其实它也可是一个数组,组合键对第一个参数取用规则有影响,但第二个参数本身就是一个区域,函数直接将其作为一个常量数组看待,所以其不受组合键的影响,大家可以找些数据练习下。不过Vlookup函数使用数组公式比较变态,而且也没有任何好处,所以网络上很少有使用Vlookup函数数组公式的案例。
那函数=SUM(A1:A5*B1:B5),为什么组合键对其有影响呢,这是因为组合键影响的是区域A1:A5和B1:B5之间的运算符,这点类似于数学之中运算优先级的问题。组合键影响A1:A5和B1:B5运算,其结果作为一个常量数组,提供给SUM函数运算。
那么大家可能又有疑问了,哪些函数支持数组公式呢,并且影响的是哪个参数呢?
在一般应用情况下,参数是一片的引用区域,那这个参数就支持数组直接取用规则例如sum函数Vlookup函数第二个参数,如果只是单个单元格应用较多,那就受组合键的影响,例如len函数vlookup函数第一个参数。
说了这么多,今后就别再问那些公式是数组公式了,因为就没有“数组公式”这一特殊的东西,数组在excel公式运算之中无处不在,常用的组合键只是影响了数组的取用规则,和最终数据的呈现上。一些函数的参数可以是数组,计算结果也可以是数组,这个计算结果可以作为另外一个函数的参数进行计算,ctrl+alt+enter组合键只是扮演了“导演”角色,它不是“主角”,它只是告知excel如何将单元格区域转化为数组的方式,和最终结果的展现上。
以上说了那么多,希望对excel数组公式有困惑的朋友有所帮助,当然本人文字功底和对excel的认识水平均有限,里面不免有不恰当,甚至让人困惑的地方,如果有何疑问欢迎提出,如果有错误的之处,也请不吝指正。
文章链接: