请教:函数含义 有一个公式:=INDEX(A:A,SMALL(IF(COLUMN(1:1)

问题描述:

请教:函数含义 有一个公式:=INDEX(A:A,SMALL(IF(COLUMN(1:1)
1个回答 分类:综合 2014-12-06

问题解答:

我来补答
这个公式是数组公式,要按下SHIFT+CTRL+ENTER三键,这样公式前后就会自动加上一对花括号{=.}
 
COLUMN(1:1)  因为COLUMN是求列标是第几列,而1:1指的是第一行整行,所以就会得出{1,2,3.254,255,256},这样的数组(以2003版为例,是1列~256列)
 
ROW()  求行号值如ROW(A1)就是A列第一行,行号就是1,下拉后就是ROW(A2)即A列第二行,值就是2了
 
IF(COLUMN(1:1)<=B$2:B$4,ROW($2:$4))  
        实际上就是IF({1,2,3.254,255,256}<=B$2:B$4,ROW($2:$4)  意思为1至256这些数小于等于B2至B4单元格值的,返回对应的2,3,4行号,
        这是一个量比较大的数据对比,先是B2单元格的值去比较1至256,再是B3单元格的值去比较1至256,再是B4单元格的值去比较1至256,形成3*256个数据,假设B2,B3,B4的值是分别4,2,3.则4会小于等于1至256的1至4的4个数,即为
{TRUE,TRUE,TRUE,TRUE,FALSE,FALSE.(此为B2与1至256比对的数据,共256个真假值);TRUE,TRUE,FALSE,FALSE,FALSE.(用分号分隔后是B3与1至256比对的数据,也是256个真假值).;TRUE,TRUE,TRUE,FALSE,FALSE.(用分号分隔后是B4与1至256比对的数据,同样是256个真假值).FALSE,FALSE}
这样的数组,这些值中为真值的(TRUE)会分别返回ROW($2:$4)={2;3;4}这三个数,

B2与1至256相比的是第一组256个真假值,真值的返回2,假值(即FALSE)还是返回假值;
B3与1至256相比的是第二组256个真假值,真值的返回3,假值(即FALSE)还是返回假值;
B4与1至256相比的是第三组256个真假值,真值的返回4,假值(即FALSE)还是返回假值;
{2,2,2,2,FALSE,FALSE,FALSE,FALSE.FALSE,FALSE,FALSE;3,3,FALSE,FALSE,FALSE.;4,4,4,FALSE,FALSE,FALSE.FALSE,FALSE,FALSE,FALSE}
这样的数组
 
SMALL({2,2,2,2,FALSE,FALSE,FALSE,FALSE.FALSE,FALSE,FALSE;3,3,FALSE,FALSE,FALSE.;4,4,4,FALSE,FALSE,FALSE.FALSE,FALSE,FALSE,FALSE},ROW(A1))
意思为这个数组中第一小的值,即该值为2
公式下拉后是ROW(A2),即求第二小的值,该值也还是2
第三小的值也是2,
第四,五小的值是3
第五,六,七小的值是4
 
INDEX(A:A,某行号值)  
如  
INDEX(A:A,2)   即 A列的第二行的内容
INDEX(A:A,3)   即 A列的第三行的内容
 
这样整个公式就会形成,B列写的数是多少时,C列就会出现多少个A列的内容,
如A2是A,B2是4,这样就会在公式列出现四个A,A3是B,B3是2,公式列就会接着出现两个B,A4是C,B3是3,公式列就会出现3个C
 
建议公式改成如下,公式下拉行数多时,就不会出现错误值了
=INDEX(A:A,SMALL(IF(COLUMN(1:1)<=B$2:B$4,ROW($2:$4),4^8),ROW(A1)))&""
 
如图

 
 
这题答的辛苦,用了我一个多小时组织和录入才回答完毕,看懂后请采纳
 
 
展开全文阅读
剩余:2000