通过ISNA函数对返回的数组里的各个元素进行了判断和处理,把所有的#N/A值替换成数值0,最后再用SUM函数对所有数值进行求和。
我们说,数组计算时,得注意行列数的匹配,其实如果了解了数组的计算原理后,能正确处理那些返回的#N/A值的话,很多时候,并不会出错的。
第四部分:数组扩充
这一贴的内容相对比较简单,主要是对第三部分,数组的计算里提出的思考问题作出回复。昔日关云长温酒斩华雄的故事听过吧?如果你已认真读了前面的贴子,且用心总结了下,再来看此贴,相信你也会有“云长提华雄之头,掷于地上,其酒尚温”的豪气。
呵呵??嫌我唐僧了吧?那端上一杯热茶,快快进入主题,当读完贴后,你的茶是否喝完?
读完上一贴,了解了数组公式的计算规律后,我们知道,数组与数组计算,返回一个新的数组。返回的数组的行数与参与计算的数组中行数较大的数组的行数相同,列数与列烽较大的数组的列数相同。
但“为什么两个不同的公式,返回的结果却相同呢?”,这就是我们今天要讲的一个新概念——数组扩充。
数组计算时,参与计算的两个数组得具有相同的维数,也就是得注意行列数的匹配。
对于行列数不匹配的数组,在计算时Excel会将数组对象进行扩展,以符合计算需要的维数。每一个参与计算的数组的行数必须与行数最大的数组的行数相同,列数必须与列数最大的数组的列数相同。
例1: 公式:=SUM({10,20,30,40}*10)里,第一个参数{10,20,30,40}是一行四列的数组,第二个参数不是数组,只是一个数值,为了让第二个数值能与第一个数组进行专题片,这时,Excel会自动将第二参数的10扩充成一个一行四列的数组{10,10,10,10}与第一参数匹配。所以,SUM({10,20,30,40}*10)最后是使用SUM ({10,20,30,40}*{10,10,10,10})进行计算,得到的结果是10*10,20*10,30*10,40*10的和。
例2:
公式:={10;20;30;40}+{100,200}的第一个参数{10;20;30;40}是一个四行一列的数组,{100,200}是一个一行二列的数组,在计算时,Excel会将第一个数组自动扩充为一个四行二列的数组{10,10; 20,20;30,30;40,40},也会将第二个数组扩充为一个四行二列的数组{100,200;100,200;100,200;100,200},所以={10;20;30;40}+{100,200}这个公式最后是使用公式={10,10;20,20;30,30;40,40}+{100,200;100,200; 100,200;100,200}进行计算。公式最后返回的数组也是一个四行二列的数组,数组的第R行第C列的元素等于扩充后的两个数组的第R行第C列的元素的计算的结果。
好了,在这一贴要讲的已经讲完了。“数组扩充”这个华雄是否已被你斩于马下?也不知道你手里的茶喝完了没?我希望听到你回答的是:“华雄已斩,茶没喝完,还温着呢。”有兴趣,记得跟贴告诉我一声。呵呵??
11
继续喝茶,休息。顺便听我再给你唠叨几句。
班里有50个学生,为了让每个学生都有座位,需要预备50套课桌椅。如果只有30套课桌椅,那最后进教室的20个同学将没有座位,如果有60套课桌椅,将会有10套课桌椅空在教室里而别的班级需要课桌椅的同学又不能使用。浪费啊??
学生就像数组里的元素,输入数组公式返回数组的元素就像叫学生进教室,我们得给他们准备好合适的座位。所以输入多单元格数组公式时,应先选中需要返回数据的单元格区域,选中的单元格区域的行、列数应与返回数组的行、列数相同。否则,如果选中的区域小于数组返回的行列数,站在教室里,我们只能看到占了座位的这群学生。如果选择的区域大于数组返回的行列数,那超出的区域将会没有学生去坐而返回#N/A值。
第五部分:公式的解读
有人说,不喜欢数组公式。原因是太复杂,看不懂。
所以,先讲一讲公式的解读,对初学的人来说,应该是很有必要的。
对于公式的解读,论坛上已经有很多的例子了,所以,我也没有什么新的东西可以跟大家讲。在这里,我把前辈们的经验总结一下,和大家分享。
1、利用F9键
这好像是大家在解读公式的时候用得最多的一个功能了。想知道某段公式的运行结果是什么?在编辑栏里,用鼠标选中需要进行计算的某段公式,将其抹黑,然后按F9键,就得到了公式的计算结果。这个功能我们在前面讲数组维数的时候已经用到了,这里不再多讲。
需要提醒的是:当你对公式按F9键进行求值后,返回的时候记得按Esc键,或者点编辑栏左侧的“取消”按钮。否则公式就变成你求值后的样子了。
2、利用公式求值
要看懂复杂的公式,公式审核的帮助是很大的。
选择需要公式求值的单元格,点击“工具—>公式审核—>公式求值”,调出公式求值对话框。
12
点击“求值”按钮,可以逐步对公式进行计算,将公式每一步的运算结果展示出来。
3、利用插入函数
对于复杂公式的结构分析、分段理解,使用插入函数功能是很方便的。
点鼠标左键,将光标定位到编辑栏里公式的某个地方。点击“插入——>函数”菜单命令:
13
这时,弹出函数参数的对话框,它会对我们的公式进行分段解析。
当然,你也可以直接点击编辑栏左边的插入函数命令按钮来调出对话框。
补充说明:
对于一个返回多个结果的数组公式,如果不是在单元格区域中输入,而只是在一个单元格中输入,则该单元格只返回数组结果中的第一个元素。比如,在一个单元格中输入数组公式=A1:A3*B1:B3,该单元格只返回A1*B1的值。
不过,如果想该单元格返回数组结果中第2、第3个值,可以用INDEX函数。比如,输入普通公式=INDEX(A1:A3*B1:B3,2)返回A2*B2的值。
14