本帖最后由 Zaezhong 于 2012-12-3 11:08 编辑
题目简单而且思路相差无几,简要分析,高手可以忽略
区域转换_简析.zip
(20.65 KB, 下载次数: 23)
本题涉及到了内存数组的问题,有两个概念先提一下:内存数组和多单元格数组公式 注:以下说明中内存数组和多单元格数组公式是不同的概念 内存数组 内存数组可以是常数数组,其作用是可以直接作为某一个函数公式的部分参数参与到其他运算,而且内存数组是一个整体,密不可分。
说明数据
如上图使用=SMALL(A1:A20,{1,2,5}),该公式就是一个内存数组,可以在横向连续的3个单元格(如C1:E1)中输入得到结果{4,4,8},而且三个单元格中的公式完全相同使用=INDEX(SMALL(A1:A20,{1,2,5}),1)可以得到SMALL部分的第一个值,使用数字1、2、3可以分别获得每一个值。内存数组的一个特点是将结果赋值到单元格区域后,在每一个单元格中可以看到相同的结果。内存数组如果要全部显示,那么必需在多个单元格中显示,如果不显示可以作为整体参与到其他函数的运算中去。 多单元格数组公式 多单元格数组应该说包括的范围要比内存数组大一些,多单元格数组包括内存数组。 举例:要求在A1:A20单元格输入对应的行号 使用多单元格数组:=ROW() 内存数组:=ROW(1:20) 两者的区别在于ROW函数的参数,我们知道如果ROW行数省略参数那么默认就是使用单元格所在的行,多单元格数组公式其实是使用了一个参数的简化形式,换言之,使用ROW()这样的方法得到结果还使用了单元格的位置这一特性,使用公式=ROW()在B2:B21输入得到的结果就不相同了。这种方法看似相同其实实质已经发生变化,每次参与到运算的结果已经发生了变化,在编写公式时根据不同的单元格位置可能有不同结果的函数包括CELL,INDIRECT,ROW,COLUMN,这些函数跟易失性函数有重复。在A1:A20单元格区域任意选择一个单元格(比如A5)通过使用F9查看结果,可以看到结果是数组{5},其值是单个值的数组,而使用ROW(1:20)在任意单元格使用F9看到都是{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20},省略的用法可以理解为是墙头草,随着位置的变化而变化,而内存数组的结果总是存在的。 变化下上面的举例:求1+2+3+……18+19+20的和,那么公式都是=SUM(ROW(1:20))了。 总结: 多单元格数组其实就是一种公式输入方法的说明,同样的道理,还包括单个单元格的数组公式已经简化为了数组公式,大致关系如下 在早期的正式竞赛区函数题有要求内存数组公式解答的题目,有空可以去看看。 |