如何学习excel数组

什么是数组公式呢?
数组就是一个具有维度的集合 。比如:一维数组、二维数组、多维数组 。
EXCEL的数组,就相当于我们数学中的矩阵,一个矩阵内包装有多个元素,元素与元素的不同组合就构成了不同维数的矩阵,表现在EXCLE表格上就 N行*M列的一个区域,N和M 不同时=0 就可以了,如下图就是一维 , 二维,三维数组的不同组合方式,分别是单行或单列一维数组 , 多行多列二维,三维数组 。

如何学习excel数组

数组输入方法:
使用数组公式,在编辑栏输入完公式以后一定要按下“Ctrl+Shift+Enter”组合键,使编辑栏的公式处在“{}”之中 。
数组的数据类型
文本、数字、逻辑值、错误值
案例说明:
1. 求1到100的和
只用一个函数解决1到100的和,当然也可以是1000、10000甚至更多 。讨论具体的数值没有太大意义 , 此处只是希望通过此例让大家更进一步的了解数组公式的用法 。解答:{=SUM(ROW(1:100))} 问题分析:求1到100的和,答案是5050 , 但Excel必须是你告诉了它正确的方法,它才能知道 。计算从1到100的和,实际上就是计算1+2+3+4+……+98+99+100,好了,答案出来了,在编辑栏中输入 “=sum(1+2+3+4+……+98+99+100)” 。相信聪明的一定对此答案不满意,虽然能得到正确的结果 , 但很明显是“错误”的方法 。要得到1到100的正确数列,最简单的方法就是使用Row()或是Column()函数,由于个人习惯,我比较习惯于Row(),所以这里以Row()函数为例 。熟悉Row()函数:在A1单元格中输入“=Row()”,使用填充柄填充至A5,看到什么结果?是不是每一个单元格中值就是其对应的行数 。
下面是一个典型的应用
案例2:求出各科成绩大于90分的人数
如何学习excel数组

先用数组计算条件(B19:B22>90) , 结果是{FALSE;FALSE;FALSE;TRUE},大于90,就为true,否则false.
然后用“–”符号 把逻辑值转换可计算值:–(B19:B22>90),结果为:{0;0;0;1} , 再用sum计算和 。
数组是Excel数据处理的一个强大工具,我们首先要知道数组分为工作表数组、vba数组两大类 。
工作表数组:用Ctrl+Shift+Enter结束输入
此类数组在公式运用中,会降低Excel的工作效率(数组太多时,运行会变慢),但是数组公式又会很巧妙的完成很多意想不到的效果 。
tips1、降低效率的例子:我初学Excel的时候,在一份设备运行记录的数据收集系统中,大量运用了【{sum(if(……))}】这种形式的数组公式,来对多条件求和 。每次打开表格,都要计算1min左右,后来在2013版本中增加了sumifs函数,然后我就用sumifs替代了以前的公式,每次打开10s左右即可完成计算,效率大大提高了 。
如何学习excel数组

tips2、意想不到效果的例子(公式保护):我编写的公式有时候会被自己不小心给误操作了,比如公式为【=A1+B1】,由于不小心按了键盘的什么地方了,就变成【=A1+1】这样了 , 导致计算错误 。而是用数组公式就能很大程度避免这样的问题 。比如选中C1到C5输入公式【={A1:A5*B1:B5}】,当你不小心改变C1到C5的公式的时候,会弹出警告框:不允许修改数组的某一部分 。
如何学习excel数组

这里,有个函数不需要三键结束 , 它就是SUMPRODUCT函数
【如何学习excel数组】
vba数组,效率提升利器
生成vba数组的方式有很多 , 其中array是专门用来生成数组的方法,还可以将一个单元格区域直接赋值给一个数组变量来生成数组
效率提升利器:由于vba数组是在内存中完成的,而不涉及单元格的读写工作,所以效率那是杠杠滴,在写vba代码的时候 , 能多用数组+字典的话,就能很大程度上提升运行效率 。
如何学习excel数组

经验总结扩展阅读