嗨!是这个问题吧
http://zhidao.baidu.com/question/476188770.html
数组公式,解释很费事,给你个通用公式(常见的是“列”排列):
=INDEX(要返回的列区域,SMALL(IF(条件,ROW($1:$100),4^8),ROW(1:1)))&""
按IF判断,如果符合条件,就按序返回行号(ROW),否则就返回最下面行号(4^8=65536,即2003版本最下面的一行,其实就是空行)。
而返回的行号,按照SMALL规定,从小到大(下拉时按行号ROW)先后返回。
INDEX规定了要返回列区域,即返回上面函数所返回的行号对应的单元格内容。
你的要求的以“行”排列的,我的公式:
=INDEX(2:2,SMALL(IF($A1:$O1="衬衫",COLUMN($A:$O),4^4),COLUMN(A:A)))
4^4=256,即最右边的IV列(2003版本),其实也就是返回空值。
2:2——就是要返回数据所在的行号,COLUMN()——列号。
而你的实际表格是:
E F G H I J K
6 1 1 3 5 1 2 1
7 13 25 16 19 23 21 9
同样是要向右列出所有第6行=1的时候,第7行对应的值。
请修改我的公式中当的引用就行:
=INDEX(7:7,SMALL(IF($E6:$K6=1,COLUMN($E:$K),4^4),COLUMN(A:A)))
我的公式没有简化的哦,符合我上面给你的通用公式。而那是你那个问题里面另外两个网友的公式“多”些内容而已。
话外:
1、通用公式最后的“&""”是避免当没有匹配数据时返回错误值而设置,但看你要返回的是数值,增加“&""”后返回的数值会变成文本,可借用判断式:=IF(COLUMN(A:A)>COUNTIF( $E6:$K6,1),"",原公式)。
2、我之前的公式不就是你现在要的结果吗(A3输入公式)? 哈哈!
你的提问:
现在我的实际情况是我基础数据表格是横向的,如下:
A1=商品,B1=衬衫,C1=裤子,D1=衬衫。。。O1=衬衫
A2=销量,B2=13, C2=17, D2=11 。。。 O2=16
A3=改好的公式就=13了,往右一拖B3就=11了。。。B*=16。