本帖最后由 ZhouFfett 于 2018-5-21 22:26 编辑
有了数组扩展的理论,我们就可以理解单格数组公式与区域数组公式有什么不同了。
继续看附件中的Sheet1表(2楼的截图)。
由于C21~C30的单格数组公式,只需要返回一个单值给单元格,所以,公式只使用INDIRECT返回的数组中的第一元素。
而C14:F18的区域数组公式则不同,在该区域中只有一个公式,而这个公式需要返回一个四列五行的数组以适应该区域。
从3楼的分析可知,这时候INDIRECT函数返回的是一个两列三行的数组,而C14:F18是一个四列五行的数组,所以INDIRECT返回的数组需要进行数组扩展。
两个数组都是二维,所以使用N/A值扩展。
{ A1:D3, B1:E4; C2, C3:E5; D6, A2:E4 } 扩展后为:
{ A1:D3, B1:E4, #N/A, #N/A; C2, C3:E5, #N/A, #N/A; D6, A2:E4, #N/A, #N/A; #N/A, #N/A, #N/A, #N/A; #N/A, #N/A, #N/A, #N/A }
区域数组公式1:{=SUM(INDIRECT($A$8:$B$10))}的计算过程如下:
={ SUM(A1:D3), SUM(B1:E4), SUM(#N/A), SUM(#N/A); SUM(C2), SUM(C3:E5), SUM(#N/A), SUM(#N/A); SUM(D6), SUM(A2:E4), SUM(#N/A), SUM(#N/A); SUM(#N/A), SUM(#N/A), SUM(#N/A), SUM(#N/A); SUM(#N/A), SUM(#N/A), SUM(#N/A), SUM(#N/A) } 所以最后返回:
{ 446, 1760, #N/A, #N/A; 3, 307, #N/A, #N/A; 3, 1033, #N/A, #N/A; #N/A, #N/A, #N/A, #N/A; #N/A, #N/A, #N/A, #N/A }
区域数组公式2:{=SUM(IF(1,INDIRECT($A$8:$B$10)))}的数组扩展同上,其计算过程如下:
={ SUM(IF(1,A1:D3)), SUM(IF(1,B1:E4)), SUM(IF(1,#N/A)), SUM(IF(1,#N/A)); SUM(IF(1,C2)), SUM(IF(1,C3:E5)), SUM(IF(1,#N/A)), SUM(IF(1,#N/A)); SUM(IF(1,D6)), SUM(IF(1,A2:E4)), SUM(IF(1,#N/A)), SUM(IF(1,#N/A)); SUM(IF(1,#N/A)), SUM(IF(1,#N/A)), SUM(IF(1,#N/A)), SUM(IF(1,#N/A)); SUM(IF(1,#N/A)), SUM(IF(1,#N/A)), SUM(IF(1,#N/A)), SUM(IF(1,#N/A)) } 所以最后返回同上,不再累赘。
(待续)
|