Excel index函数与match函数的配合应用,多条件返回值

excel 教程 - 五月 19, 2011 - 来源:单点日志 - 1 Comment -

因为自己是个兼职站长的人,平时在公司有整理一些资料,所以excel也是自己经常用的办公工具,当然经常会碰到一些问题需要新的方法来解决,这个过程学习excel也就必须了,总归会把学到的excel新的知识点分享出来,那么今天就简单介绍下Excel 的index函数。

根据excel固有的帮助,我们可以了解到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。

2.引用形式,其写法INDEX(reference,row_num,column_num,area_num)

返回指定的行与列交叉处的单元格引用。如果引用由不连续的选定区域组成,可以选择某一选定区域。


Reference   对一个或多个单元格区域的引用。

  • 如果为引用输入一个不连续的区域,必须将其用括号括起来。

  • 如果引用中的每个区域只包含一行或一列,则相应的参数 row_num 或 column_num 分别为可选项。例如,对于单行的引用,可以使用函数
    INDEX(reference,,column_num)。

Row_num   引用中某行的行号,函数从该行返回一个引用。

Column_num   引用中某列的列标,函数从该列返回一个引用。

Area_num   选择引用中的一个区域,返回该区域中 row_num 和 column_num
的交叉区域。选中或输入的第一个区域序号为 1,第二个为 2,以此类推。如果省略 area_num,则函数 INDEX 使用区域 1。

Reference的写法:(A1:B4,D1:E4,G1:H4),则 area_num 1 为区域 A1:B4,area_num 2 为区域 D1:E4,而 area_num 3 为区域
G1:H4。


两种形式的原理一直,却别在第二种格式在确定位置时多一个最后的参数,取值在哪个区域。当然一般是以,1,2,3确定哪个行数、列数、区域数,条件您知道这个位置,然而很多情况,这个位置是不确定,需要根据条件来判断出正确的位置,这个类似于excel多条件求和excel多条件统计,而这个是索引或成为返回正确的值。

最经常的运用是index函数与match函数的混搭配合法,以达到解决的效果。

示例:

INDEX函数与MATCH函数联用:

MATCH函数是返回在指定方式下与指定数值匹配的数组中元素的相应位置。

               公式:MATCH(LOOKUP_VALUE,LOOKUP_ARRAY,MATCH_TYPE)

                         LOOKUP_VALUE为在数据表中查找的数值

                         LOOKUP_ARRAY为包括要查找的连续单元格区域

                         MATCH-TYPE为数字1,0,-1

原理就用match函数来确定满足条件的行数或列数,结合后公式INDEX(array,MATCH(LOOKUP_VALUE,LOOKUP_ARRAY,MATCH_TYPE),MATCH(LOOKUP_VALUE2,LOOKUP_ARRAY2,MATCH_TYPE))

当然还有更为复杂的运用,比如需要返回满足条件的单号:
=INDEX([原料状况.xls]请购_DATA!$L$3:$L$2963,MATCH(IF(V773=”集港”,SUMPRODUCT(LARGE(([原料状况.xls]请购_DATA!$Y$3:$Y$2963=AL773)*([原料状况.xls]请购_DATA!$Q$3:$Q$2963>=(W773-10))*[原料状况.xls]请购_DATA!$Q$3:$Q$2963,ROW($1:$1))),IF(V773=”在途”,SUMPRODUCT(LARGE(([原料状况.xls]请购_DATA!$Y$3:$Y$2963=AL773)*([原料状况.xls]请购_DATA!$R$3:$R$2963>=(W773-10))*[原料状况.xls]请购_DATA!$R$3:$R$2963,ROW($1:$1))),IF(V773=”已采未产”,SUMPRODUCT(LARGE(([原料状况.xls]请购_DATA!$Y$3:$Y$2963=AL773)*([原料状况.xls]请购_DATA!$T$3:$T$2963>=(W773-10))*[原料状况.xls]请购_DATA!$T$3:$T$2963,ROW($1:$1))),”无采购单号”)))&AL773,IF(V773=”集港”,[原料状况.xls]请购_DATA!$Q$3:$Q$2963,IF(V773=”在途”,[原料状况.xls]请购_DATA!$R$3:$R$2963,IF(V773=”已采未产”,[原料状况.xls]请购_DATA!$T$3:$T$2963,”error”)))&[原料状况.xls]请购_DATA!$Y$3:$Y$2963,0),1)

根据单号和另外一些条件来正确显示时间:

=IF(OR(V772=”",ISERROR(Z772)),”",INDEX([原料状况.xls]请购_DATA!$Z:$AB,MATCH(IF(AA772=FALSE,IF(ISNUMBER(Y772)=TRUE,Y772,LEFT(Y772,14)),IF(ISNUMBER(Z772)=TRUE,Z772,LEFT(Z772,14)))&AL772,[原料状况.xls]请购_DATA!$L:$L&[原料状况.xls]请购_DATA!$Y:$Y,0),MATCH(V772,[原料状况.xls]请购_DATA!$Z$2:$AB$2,0)))

这些是自己的一些运用,然而看似复杂的公式其实都是一些类似的衍生,只要了解原理,至于如何配合其他一些函数那就是您的事情了,因为在设定函数的过程,总归会出现一些难以预料的情况,所以还要加上一些判断来纠正显示的结果,让结果更接近正确,需要注意的是,运用index函数必须注意以下的各条说明内容。

相关重要说明

  • 如果同时使用参数 row_num 和 column_num,函数 INDEX 返回 row_num 和 column_num 交叉处的单元格中的值。
  • 如果将 row_num 或 column_num 设置为 0,函数 INDEX 则分别返回整个列或行的数组数值。若要使用以数组形式返回的值,请将
    INDEX 函数以>数组公式 (数组公式:数组公式对一组或多组值执行多重计算,并返回一个或多个结果。数组公式括于大括号 ({ }) 中。按
    Ctrl+Shift+Enter
    可以输入数组公式。)形式输入,对于行以水平单元格区域的形式输入,对于列以垂直单元格区域的形式输入。若要输入数组公式,请按
    Ctrl+Shift+Enter。
  • Row_num 和 column_num 必须指向数组中的一个单元格;否则,函数 INDEX 返回错误值 #REF!。

单点日志:http://spoint.babyshoot.cn



无觅相关文章插件,快速提升流量

《Excel index函数与match函数的配合应用,多条件返回值》由单点日志原创提供!
转载请注明:http://spoint.babyshoot.cn/archives/2011/05/excel-index-match.html

1 Comment│赶紧发话! »

发表评论

您必须登录后才能发表评论。
8