第2个回答 2010-06-07
INDEX
请参阅
返回列表或数组中的元素值,此元素由行序号和列序号的索引值给定。
INDEX 函数有两种语法形式:数组和引用。数组形式通常返回数值或数值数组,引用形式通常返回引用。当函数 INDEX 的第一个参数为数组常数时,使用数组形式。
语法 1
数组形式
INDEX(array,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。
说明
如果同时使用 row_num 和 column_num,函数 INDEX 返回 row_num 和 column_num 交叉处的单元格的数值。
如果将 row_num 或 column_num 设置为 0,函数 INDEX 则分别返回整个列或行的数组数值。若要使用以数组形式返回的值,请将 INDEX 函数以数组公式形式输入,对于行以水平单元格区域的形式输入,对于列以垂直单元格区域的形式输入。若要输入数组公式,请按 Ctrl+Shift+Enter。
Row_num 和 column_num 必须指向 array 中的某一单元格;否则,函数 INDEX 返回错误值 #REF!。
示例 1
如果您将示例复制到空白工作表中,可能会更易于理解该示例。
操作方法
创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。
从帮助中选取示例。
按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
1
2
3
A B
数据 数据
苹果 柠檬
香蕉 梨
公式 说明(结果)
=INDEX(A2:B3,2,2) 返回单元格区域的第二行和第二列交叉处的值(梨)
=INDEX(A2:B3,2,1) 返回单元格区域的第二行和第一列交叉处的值(香蕉)
示例 2
如果您将示例复制到空白工作表中,可能会更易于理解该示例。
操作方法
创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。
从帮助中选取示例。
按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
1
2
3
A B
公式 说明(结果)
=INDEX({1,2;3,4},0,2) 返回数组常量中第一行、第二列的值 (2)
返回数组常量中第二行、第二列的值 (4)
注释 示例中的公式必须以数组公式的形式输入。在将示例复制到空白工作表中后,请选中以公式单元格开始的单元格区域 A2:A3,按 F2,再按 Ctrl+Shift+Enter。如果公式不是以数组公式的形式输入,则返回单个结果值 2。
第3个回答 2009-07-23
公式还有一个小问题,如果A1:A10000中如果在数据之间有空单元格,比如A1:A10有数据,A11没有数据,A12:A100又有数据,那么用这个公式时,它就会取一个空单元格,使返回的数据不是连续的.中间会有一条空记录.把它改成这样试试=INDEX('分柜清单 '!A:A,SMALL(IF((MATCH('分柜清单 '!$A$1:$A$10000&"",'分柜清单 '!$A$1:$A$10000&"",0)=ROW($A$1:$A$10000))*('分柜清单 '!$A$1:$A$10000<>""),ROW($A$1:$A$10000),65536),ROW(A2)))&""
MATCH()里边为什么要加“&""”因为MATCH()是查找不到真空单元格的,&""以后就把真空单元格变成了假空单元格,只要MATCH()第二个参数中包含有假空单元格,它就能查找到它的位置,MATCH()第二个参数&""就为了与第一参数保持一致,这样就保证了MATCH()第一个参数中的所有单元格在A:A10000中都能找到相应的位置,从而就不会返回#NA了
结尾为什么要加“&""”是为了让公式不出现不符合条件的0值,因为不符合条件的都返回65536,也就是A列最后一个单元格,而这个单元格肯定是没有数据的空单元格(真空单元格),INDEX()取到空单元格就会以0的形式出现,空单元格&""就返回空(假空),而不是返回0了.