楼主 lrlxxqxa |
Q:为什么C5公式普通输入和数组输入返回值不同? A:因为输入方式不同,excel采取的运算模式不同。 当直接输入时,excel按照隐含交叉(公式所在单元格与引用单元格之间的位置的交叉单元格的值)方式计算; 而三键输入时,excel按照数组运算方式计算。 隐含交叉2007.rar |
2楼 lrlxxqxa |
结合此例说一下隐含交叉和数组运算这两种不同的运算方式: 注:红色区域是普通公式,按照隐含交叉引用方式计算;蓝色区域是数组公式,按照数组运算方式计算。 数量=OFFSET(Sheet1!$A$2,,,COUNTA(Sheet1!$A:$A)-1),这里是利用offset引用了一个动态区域,即A列的非空单元格(除了A1),返回到单元格中也就是一个内存数组:{2;3;2;4;8;1} 当我们在C5输入=数量时,公式所在单元格C5与“数量”引用的动态区域A2:A7,交叉在A5单元格,所以返回A5单元格的值=4。 如果还理解不了,可以想象C5是一个点(红色),A2:A7是一条线(黄色),红色和黄色垂直交叉的交集所在单元格的值,就是公式返回的结果。 当我们在C5三键输入={数量}时,excel就不会按照隐含交叉引用方式运算了。因为C5是一个单独的单元格,excel会把“数量”引用的动态区域的第一个值返回,即{2;3;2;4;8;1}里面的第一个元素=2。 另外,当普通公式输入区域与黄色区域没有交集的时候,结果出错#VALUE!;如果以数组公式输入则不会出错,因为excel根本就不会和黄色区域去交叉比对。 |
3楼 lrlxxqxa |
多说几句,数组运算并非是三键结束的公式才能告知excel执行,有的函数内部的运算执行的就是数组运算,如sumproduct,这时就没有必要使用三键结束输入。 只有当sumproduct函数嵌套其它函数使用(比如if)不能满足要求的运算方式时,才需要三键结束。 也不是说所有的数组公式(三键结束)都必须执行按照数组的运算方式执行运算。比如把一个常量数组{1;2;3;4;5}三键输入到单元格中,执行的就不是标准的数组内部运算,而是简单的把多个值和多个单元格一一对应。因为对于这样的公式,根本用不着以数组的模式来运算。 |
4楼 gouweicao78 |
很用心,喜欢总结。但: 问题1:下的结论往往不够严谨,例如: “只有当sumproduct函数嵌套其它函数使用(比如if)不能满足要求的运算方式时,才需要按三键结束。” IF(SUMPRODUCT和SUMPRODUCT(IF都是嵌套使用,表述就变得含糊了,“要求的运算方式”是什么,也含糊了。 问题2:题目和本文的主旨是什么?是隐含交叉问题还是探讨数组公式问题? 呵呵,也就是说,你很想多让读者了解更多的信息,但文章的组织却没做到,因而倒不如退一步,先把问题一个个说清楚,让文章更有主次分明和层次感。 |
5楼 lrlxxqxa |
对于您说的我下的结论往往不够严谨,这个我认同,因为还有其他人也这么说过我,呵呵。 这个问题来源于qq群内的讨论,好几个朋友对于1楼的问题都十分困惑,我认为挺有代表性的所以做了示例来说明。还不错,其中有2个听了我的讲解已经明白啦。 至于此问是隐含交叉还是数组运算,其实发帖时我并没有想得很清楚,想到哪里写到哪里,自然就很混乱了。现在想想,主要说的是函数运算中的隐含交叉引用吧。 2个月前,我对于隐含交叉概念很模糊,还是您指点的我,不知记得否? |