|
请帮忙解释下公式
请帮忙解释下公式,看不懂,但很需要。
公式出处:http://club.excelhome.net/viewth ... =%B0%B4%D7%DC%B7%D6,2楼山菊花,内有附件WTmFtns6.rar 。
=IF(ROW(1:1)>COUNTIF(七年级!C:C,B$1),"",INDEX(七年级!B:B,RIGHT(LARGE(data*10^6+ROW(data),ROW(1:1)),4)))
data =IF(成绩查询!$B$2="",10000-OFFSET(七年级!$B$2,MATCH(成绩查询!$B$1,七年级!$C:$C,)-2,,COUNTIF(七年级!$C:$C,成绩查询!$B$1)),OFFSET(七年级!$D$2,MATCH(成绩查询!$B$1,七年级!$C:$C,)-2,MATCH(成绩查询!$B$2,成绩查询!$D$3:$L$3,),COUNTIF(七年级!$C:$C,成绩查询!$B$1)))
【gouweicao78答复】
1、IF(ROW>COUNTIF,""——如果超过七年级表C列中内容为B1单元格的记录个数,返回空文本
2、LARGE(data*10^6+row(data),row(1:1))——这个是本帖“关键字排序技术”解释过的,将data乘以10的6次方后,再加data的行号,也就是按data的大小排序,因为*10^6,且data可能有2位小数,所以加的行号只可能在最后4位数,所以用RIGHT(LARGE,4)取得行号。
3、data——分解开,无法就是一个个OFFSET而已
OFFSET(起始单元格,偏移的行数,偏移的列数,结果的高度,结果的宽度)
比如:
OFFSET(七年级!$D$2,MATCH(成绩查询!$B$1,七年级!$C:$C,)-2,MATCH(成绩查询!$B$2,成绩查询!$D$3:$L$3,),COUNTIF(七年级!$C:$C,成绩查询!$B$1))
起始单元格:七年级!$D$2
偏移行数:MATCH(成绩查询!$B$1,七年级!$C:$C,)-2——查询表B1的内容,在七年级表C列第一次出现的位置,减去2
偏移列数:MATCH(成绩查询!$B$2,成绩查询!$D$3:$L$3,)——查询表B2的内容,在查询表D3:L3第一次出现的位置
结果高度:COUNTIF(七年级!$C:$C,成绩查询!$B$1)——七年级表C列有多少个查询的B1的内容,就返回多少行记录。
[ 本帖最后由 gouweicao78 于 2009-12-10 11:13 编辑 ] |
|