一、数组的概念 什么是数组,数组就是具有某种联系的多个元素的组合,这些元素可以是文本、数值、逻辑值、日期、错语值等。在Excel中,单行或单列的数组是一维数组,多行多列的数组是二维数组。 如下面图一,随机分布的数字单元格,则为无序数,不属于数组。 图一:无序数 图二:数组 数组的书写方式:同行的元素间用逗号“,”分隔,不同的行用分号“;”分隔。 水平数组:{1,2,3,4,5,6,7,8,9 ……,N}。 垂直数组:{1;2;3;4;5;6;7;8;9……;N}。 二维数组:{1,2;3,4;5,6;7,8;9……;N}。 在实际使用中,由于较长的数组书写不方便,故可以使用公式产生。可由COLUMN(A:D)函数产生如{1,2,3,4},而ROW(1:4)可产生{1;2;3;4}。 另外,因水平数组中COLUMN()的参数为英文字母列号,运算时不好计数列号,通常情况使用TRANSPOSE使其转换成ROW()的数字参数,如TRANSPOSE(ROW(1:4)) 结果为{1;2;3;4},更加方便用户计数运算。 对于二维数组,遵循先行后列的规则,而INDEX()函数、OFFSET()函数都是先行后列的排列,可以结合其他函数(如MATCH)产生而未数组。 二、数组运算 单值运算 A1+1 àF(X) 数值运算 A1+{1;2;3;}àF{X1;X2;X3} 当数值运算中的参数变为数组时,即为数组运算。但并不是参数为数组形式时就是数组运算,如SUM()函数,参数本来就可以引用数组的方式,但这个不是数组运算。 三、数组公式 数组公式就是包含数组运算的公式。 输入数组公式时,用Ctrl+Shift+Enter结束公式的输入。这是最关键的,这相当于用户告诉Excel:“这个公式是数组,按照数组的方式来”。于是,Excel不能用常规的逻辑计算。当你按下三键后,Excel会自动给公式加上“{}”以和普通公式区别开来,不用用户输入“{}”,但如是是想在公式里直接表示一个数组,就需要输入“{}”来把数组的元素括起来。 如=SUM(2+ROW(1:3)),当录入结束后按ENTER,那么结果为3;而按CTRL+SHIFT+ENTER结束,返回的结果为12。 计算规则: 3.1两个同行同列的数组计算是对应元素间进行运算,并返回同样大小的数组。 3.2一个数组与一个单一的数据进行运算,是将数组的每一元素均与那个单一数据进行计算,并返回同样大小的数组。 3.3单列数组与单行数组的计算: 3.4行数(或列数)相同的单列(或单行)数组与多行多列数组的计算: A、计算结果返回一个多行列的数组; 3.5行、列数不相等的数组计算: A、公式返回一个多行多列数组; PS:对于行列数不匹配的数组,在计算时Excel会将数组对象进行扩展,以符合计算需要的维数。每一个参与计算的数组的行数必须与行数最大的数组的行数相同,列数必须与列数最大的数组的列数相同。 数组公式分类: 单单元格公式:数组公式应用单个单元格,一般只返回一个运算结果。 多单元格公式:数组公式应用多个单元格,一般返回多个运算结果,对应相应的单元格内。 输入多单元格数组公式时,应先选中需要返回数据的单元格区域,选中的单元格区域的行、列数应与返回数组的行、列数相同。否则,如果选中的区域小于数组返回的行列数,则返回结果不完整。如果选择的区域大于数组返回的行列数,那超出的区域将会返回#N/A值。 案例: 单单元格公式: 函数的参数或运算符的操作数从单值升级为数组,那么就得到相应的数组返回值形式。要得到什么样的结果,就用参数去考虑。 函数运算中单值参数升级变为数组后,函数的返回值就由参数的改变而得到数组的结果,运算的结果的形式由参数决定。利用参数决定返回结果的指导思想,可以有目的地数组化参数,从而得到一维数组或二维数组。 五、贴近实战 Row()函数的标记作用 对于excel数组来说,行列确定也就确定了位置。通过row()进行标记,可以得到需要的信息,从而能够对数组进行处理变换。 如课程中的案例,通过($B$6:$B$11=$E$7)*ROW($1:$6),按F9查看,可得到{FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}*{1;2;3;4;5;6},此部分的可得到数组{0;0;3;0;5;0},从而标记出了代码C出现的行数。 这里也可以看出数组运算的优势,即可以返回多个值。 筛选算子 主要起逻辑强化的作用,仍如($B$6:$B$11=$E$7)*ROW($1:$6),这里使用“*”,来达到逻辑与的作用,通过乘法运算得到非0项,也就是我们需要的结果{0;0;3;0;5;0}。 不重复算子 由于MATCH函数只能获得各个数据第一次出现的位置,与ROW(1:x)相比较后,两者相同的位置即为不重复数据,两者不同则是重复的数据(如下图)。或配合LARGE或SMALL取出所需数组(如之前ROW函数例子)。 同样的道理,当我们查找不重复值是在一个字符串里,我们还可以使用FIND()、MID()函数来生成不重复算子。 参数驱动 这里展现的是逐步将参数数组化,从而最终得到一维数组、二维数组甚至多维数组。这种思想起着向导作用,如果面对复杂的问题采取逐步分解,一步步达到最终结果。 第一步,行方向运用数组 第二步:列方向也数组化 六、总结 刚接触数组时,可能会感觉太难,但就像老师所讲的参数驱动,我们可以一步步来,从而完成一个数组公式。在论坛中,也可以找到很多帖子来帮助我们学习。 这个帖子很适合初学者,分享跟大家。谢谢! http://club./thread-511876-1-1.html
更多精彩,可登陆ExcelHome查看。 网址:http://club./forum.php |
|