|
楼主 |
发表于 2018-3-25 15:41
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 ptg 于 2018-3-25 15:53 编辑
INDEX(分数!$B:$B,SMALL(IF(分数!$A$2:$A$20=$A2,ROW($2:$20),4^8),COLUMN(A1)))&""
语句解释:
1、IF(分数!$A$2:$A$20=$A2,ROW($2:$20),,,如果分数表A列与单元格A2相同,返回所在行数,否则显示65536,得到一个内置数组,选择IF语句按F9可以看到数组{2;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536}
2、SMALL返回第K小的数:SMALL(IF(分数!$A$2:$A$20=$A2,ROW($2:$20),4^8),COLUMN(A1)),在内置数组{2;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536;65536}里找出第一小的数(因为COLUMN(A1)的列为1,向下拉则COLUMN(A1)都是返回1,向右拉则列变为2,3,4,,,),即为2.
3、返回由B列2行值:INDEX(分数!$B:$B,SMALL(IF(分数!$A$2:$A$20=$A2,ROW($2:$20),4^8),COLUMN(A1))),,,返回分数表B列第2行数字
|
|