以下是引用ynztljm在2008-5-26 18:14:19的发言:请教Excel高效办公职场对话系列视频课程中第六集 Excel高效办公之职场对话系列-学校管理 中关于补考名单的几个公式的解释。http://club.excelhome.net/viewthread.php?tid=322758&px=0 谢谢!!!谢谢!!!谢谢!!! 1、{=INDIRECT(TEXT(SMALL(IF($C$4:$Q$19<60,ROW($4:$19),65536),ROW(1:1)),"r0c1"),)&""} 2、{=INDIRECT(TEXT(SMALL(IF($C$4:$Q$19<60,ROW($4:$19),65536),ROW(1:1)),"r0c2"),)&""} 3、{=INDIRECT("r3c"&RIGHT(SMALL(IF($C$4:$Q$19<60,ROW($4:$19)*1000+COLUMN($C:$Q),65536255),ROW(1:1)),3),)&""} 4、{=INDIRECT("r2c"&RIGHT(SMALL(IF($C$4:$Q$19<60,ROW($4:$19)*1000+3*INT(COLUMN($C:$Q)/3),65536255),ROW(1:1)),3),)&""} 5、{=INDIRECT(TEXT(SMALL(IF($C$4:$Q$19<60,ROW($4:$19)*1000+COLUMN($C:$Q),65536255),ROW(1:1)),"r0c000"),)&""}
请先浏览一下本帖,上述内容多数已有解释。 IF($C$4:$Q$19<60,ROW($4:$19),65536)——如果条件成立,返回第4~19行的行号,否则返回65536(为什么要用65536?看后面) SMALL(IF(),ROW(1:1))——将IF得到的数组结果,用Small+Row(1:1)下拖的方式,从小到大排序 TEXT(SMALL(),"r0c2")——将Small得到的数字,用Text返回为指定的数字格式的文本,比如数字10,则返回"r10c2"——在R1C1引用样式中,表示第10行第2列,也就是B10单元格。 INDIRECT(R1C1样式的文本,0)——用INDIRECT函数引用该文本对应的单元格 假设INDIRECT(R65536C2,0)——引用B65536单元格,一般情况这么后面的单元格不会有东西,B65536&“”——空单元格与空文本合并,得到空文本,相当于——IF(……,"")的效果。 |