1、为什么index返回内存数组出错用INDEX求一个区域的子数组 121请看下面的对INDEX(A$1:B$10,)的测试,结论是内存数组1 2222 323第2大的值Large29正确3 424第7小的值Small7正确4 525测试最小值 Min1正确5 626测试最大值 Max30正确6 727测试索引第2列第3个23正确7 828测试索引第1列第6个6正确8 929测试列Columns2正确9 1030测试行Rows10正确10 和值Sum310正确=INDEX(常量数组,) 积Product3.9564E+20正确 偶数个数Sum+Mod10正确 Index产生的二维内存数组,可直接参
2、与下一步计算 大家还可测试 INDEX(常量数组,5),INDEX(常量数组,2) ,INDEX(常量数组,2),INDEX(常量数组,ROW(2:2),INDEX(常量数组 ,COLUMN(B:B)结论是一样的。如果指定列第二参数必须明确指示(即“,”逗号不能 省略),如果第一参数是单元格引用则两个逗号都不能省略。但一元数组为参数的结果 在单元格区域无法正确显示出来。 Index产生的多维数组,不能直接参与下一步计算 但是如果第二、三个参数为二维数组或多个单元格区域,会产生一个多维的数组,所以 不能形成二维的内存数组,而且不能用T(),N()转换。如下例 121121 121121 1211
3、21 121121 121121 121121 121121 121121 121121 121121 INDEX(常量数组,1,2)INDEX(常量数组,COLUMN(A:B) 附录: index语法节录 INDEX 函数有两种语法形式:数组和引用。数组形式通常返回数值或数值数组,引用形式通常返回引用。当函数 INDEX 的第一个参数为数组常数时,使用数组形式。 语语法法 1 1 数组形式 INDEXINDEX(arrayarray,row_num,column_num) Array 为单元格区域或数组常量。 如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num
4、 为可选。 如果数组有多行和多列,但只使用 row_num 或 column_num,函数 INDEX 返回数组中的整行或整列,且返回值也为数组。 Row_num 数组中某行的行序号,函数从该行返回数值。如果省略 row_num,则必须有 column_num。 Column_num 数组中某列的列序号,函数从该列返回数值。如果省略 column_num,则必须有 row_num。 2121 2222 2323 2424 2525 2626 2727 2828 2929 3030 =INDEX(常量数组,2) 525 =INDEX(常量数组,5,) 一元数组为参数的结果在单元格区域无法正确显示
5、出来 212121 212121 212121 212121 212121 212121 212121 212121 212121 212121 =INDEX(常量数组,2) =INDEX(常量数组,ROW(2:2) =INDEX(常量数组,COLUMN(2:2) =INDEX(常量数组,) 大家还可测试 INDEX(常量数组,5),INDEX(常量数组,2) ,INDEX(常量数组,2),INDEX(常量数组,ROW(2:2),INDEX(常量数组 ,COLUMN(B:B)结论是一样的。如果指定列第二参数必须明确指示(即“,”逗号不能 省略),如果第一参数是单元格引用则两个逗号都不能省略。但
6、一元数组为参数的结果 在单元格区域无法正确显示出来。 但是如果第二、三个参数为二维数组或多个单元格区域,会产生一个多维的数组,所以 不能形成二维的内存数组,而且不能用T(),N()转换。如下例 INDEX 函数有两种语法形式:数组和引用。数组形式通常返回数值或数值数组,引用形式通常返回引用。当函数 INDEX 的第一个参数为数组常数时,使用数组形式。 如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num 为可选。 如果数组有多行和多列,但只使用 row_num 或 column_num,函数 INDEX 返回数组中的整行或整列,且返回值也为数组。 Row_num
7、数组中某行的行序号,函数从该行返回数值。如果省略 row_num,则必须有 column_num。 Column_num 数组中某列的列序号,函数从该列返回数值。如果省略 column_num,则必须有 row_num。 用INDEX求一个区域的子数组Apolloh为什么INDEX返回内存数组出错 4132124866我们用index有限的返回内存数组的功能做点什么吧:) 2458156750 2271081614连续区域多行列子数组 6331015357=IF(1,0,INDEX(CHOOSE(1;2;3,INDEX(X,6),INDEX(X,7),INDEX(X,8),2),INDEX(C
8、HOOSE(1;2;3,INDEX(X,6),INDEX(X,7),INDEX(X,8),3) 52094011711403992 340399369418798 718798179043916 8439166234第一个参数X为常量数组 1197975614 089283515间隔区域多行列子数组 2567026310=IF(1,0,INDEX(CHOOSE(1;2,INDEX(X,2),INDEX(X,4),1),INDEX(CHOOSE(1;2,INDEX(X,2),INDEX(X,4),3) 3293318007328154 14958686966101 注意X是常量数组,也就是内存数
9、组。第一个参数X为常量数组 这里只是举简单的例子说明一下 其中的1,0、1;2 可以用公式 YY-transpose(row(indirect(“1:“2;3,INDEX(A3:D15,6,),INDEX(A3:D15,7,),INDEX(A3:D15,8,),2),INDEX(CHOOSE(1;2;3,INDEX(A3:D15,6,),INDEX(A3:D15,7,),INDEX(A3:D15,8,),3) 2815 第一参数为单元格引用 6101 注意多了不能省略的逗号 =IF(1,0,INDEX(CHOOSE(1;2,INDEX(A3:D15,2,),INDEX(A3:D15,4,),1
10、),INDEX(CHOOSE(1;2,INDEX(A3:D15,2,),INDEX(A3:D15,4,),3) 为什么INDEX返回内存数组出错 我们用index有限的返回内存数组的功能做点什么吧:) =IF(1,0,INDEX(CHOOSE(1;2;3,INDEX(X,6),INDEX(X,7),INDEX(X,8),2),INDEX(CHOOSE(1;2;3,INDEX(X,6),INDEX(X,7),INDEX(X,8),3) =IF(1,0,INDEX(CHOOSE(1;2,INDEX(X,2),INDEX(X,4),1),INDEX(CHOOSE(1;2,INDEX(X,2),IND
11、EX(X,4),3) 其中的1,0、1;2 可以用公式 YY-transpose(row(indirect(“1:“2;3,INDEX(X,6),INDEX(X,7),INDEX(X,8),2),INDEX(CHOOSE(1;2;3,INDEX(X,6),INDEX(X,7),INDEX(X,8),3) =IF(1,0,INDEX(CHOOSE(1;2;3,INDEX(A3:D15,6,),INDEX(A3:D15,7,),INDEX(A3:D15,8,),2),INDEX(CHOOSE(1;2;3,INDEX(A3:D15,6,),INDEX(A3:D15,7,),INDEX(A3:D15,8,),3) =IF(1,0,INDEX(CHOOSE(1;2,INDEX(A3:D15,2,),INDEX(A3:D15,4,),1),INDEX(CHOOSE(1;2,INDEX(A3:D15,2,),INDEX(A3:D15,4,),3) =IF(1,0,INDEX(CHOOSE(1;2;3,INDEX(A3:D15,6,),INDEX(A3:D15,7,),INDEX(A3:D15,8,),2),INDEX(CHOOSE(1;2;3,INDEX(A3:D15,6,),INDEX(A3:D15,7,),INDEX(A3:D15,8,),3)