资源描述
为什么index返回内存数组出错用INDEX求一个区域的子数组121请看下面的对INDEX(A$1:B$10,)的测试,结论是内存数组222323第2大的值Large29正确424第7小的值Small7正确525测试最小值 Min1正确626测试最大值 Max30正确727测试索引第2列第3个23正确828测试索引第1列第6个6正确929测试列Columns2正确1030测试行Rows10正确和值Sum310正确积Product3.9564E+20正确偶数个数Sum+Mod10正确Index产生的二维内存数组,可直接参与下一步计算大家还可测试 INDEX(常量数组,5),INDEX(常量数组,2),INDEX(常量数组,2),INDEX(常量数组,ROW(2:2),INDEX(常量数组,COLUMN(B:B)结论是一样的。如果指定列第二参数必须明确指示(即“,”逗号不能省略),如果第一参数是单元格引用则两个逗号都不能省略。但一元数组为参数的结果在单元格区域无法正确显示出来。Index产生的多维数组,不能直接参与下一步计算但是如果第二、三个参数为二维数组或多个单元格区域,会产生一个多维的数组,所以不能形成二维的内存数组,而且不能用T(),N()转换。如下例121121121121121121121121121121121121121121121121121121121121INDEX(常量数组,1,2)INDEX(常量数组,COLUMN(A:B)附录:index语法节录INDEX 函数有两种语法形式:数组和引用。数组形式通常返回数值或数值数组,引用形式通常返回引用。当函数 INDEX 的第一个参数为数组常数时,使用数组形式。语语法法 1 1数组形式INDEXINDEX(arrayarray,row_num,column_num)Array 为单元格区域或数组常量。如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num 为可选。如果数组有多行和多列,但只使用 row_num 或 column_num,函数 INDEX 返回数组中的整行或整列,且返回值也为数组。Row_num 数组中某行的行序号,函数从该行返回数值。如果省略 row_num,则必须有 column_num。Column_num 数组中某列的列序号,函数从该列返回数值。如果省略 column_num,则必须有 row_num。121212222232323424245252562626727278282892929103030=INDEX(常量数组,)=INDEX(常量数组,2)525=INDEX(常量数组,5,)一元数组为参数的结果在单元格区域无法正确显示出来212121212121212121212121212121212121212121212121212121212121=INDEX(常量数组,2)=INDEX(常量数组,ROW(2:2)=INDEX(常量数组,COLUMN(2:2)大家还可测试 INDEX(常量数组,5),INDEX(常量数组,2),INDEX(常量数组,2),INDEX(常量数组,ROW(2:2),INDEX(常量数组,COLUMN(B:B)结论是一样的。如果指定列第二参数必须明确指示(即“,”逗号不能省略),如果第一参数是单元格引用则两个逗号都不能省略。但一元数组为参数的结果在单元格区域无法正确显示出来。但是如果第二、三个参数为二维数组或多个单元格区域,会产生一个多维的数组,所以不能形成二维的内存数组,而且不能用T(),N()转换。如下例INDEX(常量数组,COLUMN(A:B)INDEX 函数有两种语法形式:数组和引用。数组形式通常返回数值或数值数组,引用形式通常返回引用。当函数 INDEX 的第一个参数为数组常数时,使用数组形式。如果数组只包含一行或一列,则相对应的参数 row_num 或 column_num 为可选。如果数组有多行和多列,但只使用 row_num 或 column_num,函数 INDEX 返回数组中的整行或整列,且返回值也为数组。Row_num 数组中某行的行序号,函数从该行返回数值。如果省略 row_num,则必须有 column_num。Column_num 数组中某列的列序号,函数从该列返回数值。如果省略 column_num,则必须有 row_num。INDEX 函数有两种语法形式:数组和引用。数组形式通常返回数值或数值数组,引用形式通常返回引用。当函数 INDEX 的第一个参数为数组常数时,使用数组形式。一元数组为参数的结果在单元格区域无法正确显示出来用INDEX求一个区域的子数组Apolloh为什么INDEX返回内存数组出错4132124866我们用index有限的返回内存数组的功能做点什么吧:)24581567502271081614连续区域多行列子数组6331015357=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)520940117114039923403993694187987187981790439168439166234第一个参数X为常量数组1197975614089283515间隔区域多行列子数组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)329331800732815414958686966101注意X是常量数组,也就是内存数组。第一个参数X为常量数组这里只是举简单的例子说明一下其中的1,0、1;2可以用公式YY-transpose(row(indirect(1:&YY)和row(indirect(1:&XX)分别得到其中YY是要取得列数,XX是要取得行数。Index()函数的第二、三个参数可以用单元格引用来制定行列数的变化。使用此方法参与计算仅限于预先确定子数组行列数或位置的应用注:之前chenjun版主的用别的方法的相关讨论请见http:/ 第一参数为单元格引用18798 注意多了不能省略的逗号43916=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)2815 第一参数为单元格引用6101 注意多了不能省略的逗号=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)为什么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),INDEX(X,4),3)其中的1,0、1;2可以用公式YY-transpose(row(indirect(1:&YY)和row(indirect(1:&XX)分别得到其中YY是要取得列数,XX是要取得行数。=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;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)
展开阅读全文