ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 函数与公式 > 关于ROW()+数据区域的方法

关于ROW()+数据区域的方法

作者:绿色风 分类: 时间:2022-08-18 浏览:102
楼主
fangjianp
关于ROW()+数据区域的方法说明:
    处理一平面表格数据时,要同时求出每行(列)的最值时,常用SUBTOTAL()+OFFSET()等三维取数方法,这方法很好,但不是很直观,特别是OFFSET()取出的数用F9去查看时,经常看不到欲取数的全貌,初学函数者难于理解,掌握。
   本文介绍一种用二维取数方法,解决要同时求出每行(列)的最值的方法(结合以下例子说明,该例取自EH正式竞赛题 [第2期]按最后得分排序)

 
ROW()+表格数据解答方法
两个公式分别为:
  1. =INDEX(B10:B19,11-MOD(LARGE(MOD(MMULT(SMALL(ROW(1:10)/1%+C10:G19,ROW(1:10)*5-{3,2,1}),{1;1;1}),100)/1%+11-ROW(1:10),ROW()-37),100),)
  1. =LARGE(MOD(MMULT(SMALL(ROW(1:10)/1%+C10:G19,ROW(1:10)*5-{3,2,1}),{1;1;1}),100),ROW(1:10))

其中核心公式为:
  1. SMALL(ROW(1:10)/1%+C10:G19,ROW(1:10)*5-{3,2,1})

A、直接取数:C10:G19
B、ROW(1:10)/1%+C10:G19,将C10:G19分别置于区间:[100,200),[200,300),[300,400),[400,500),[500,600),[600,7000),[7000,800),[800,900),[900,1000),[1000,1100)
结果为:{103,102,103,102,101;204,201,205,205,204;304,305,301,302,304;402,401,403,402,405;505,503,502,501,502;602,604,603,602,603;701,703,705,701,704;801,803,804,802,802;901,904,904,902,904;1001,1004,1005,1005,1003}
这样处理后,表格中第N行数据加了N*100,后续行的数比前面所有的数据大。
C、按题目要求,每行数据要去掉一个最高分和最低分,即每行取在该行中排位在{2,3,4}的数据
    第一行5个数据排序(增序){2,3,4}的数据是{102,102,103},在全部数据中排名{2,3,4}
    第二行5个数据排序(增序){2,3,4}的数据是{204,204,205},在全部数据中排名{7,8,9}
   ……………………
    第十行5个数据排序(增序){2,3,4}的数据是{1003,1004,1005},在全部数据中排名{47,48,49}
    通过SMALL(……,ROW(1:10)*5-{3,2,1})取出,                                                       <1>
{102,102,103;204,204,205;302,304,304;402,402,403;502,502,503;602,603,603;701,703,704;802,802,803;902,904,904;1003,1004,1005}                                                                                 
<1>式中ROW(1:10)*5-{3,2,1}={2,3,4;7,8,9;12,13,14;17,18,19;22,23,24;27,28,29;32,33,34;37,38,39;42,43,44;47,48,49}

D、用MOD()函数将取出的数据还原,

再后是程式化的步骤,详见附件,不再赘述。

三维取数解答
两个公式分别为:
  1. =OFFSET(B9,11-MOD(LARGE(MMULT(SUBTOTAL({4,5,9},OFFSET(C$9,ROW(1:10),,,5)),{-1;-1;1})/1%+11-ROW(1:10),ROW(1:10)),100),)
  1. =LARGE(MMULT(SUBTOTAL({4,5,9},OFFSET(C9,ROW(1:10),,,5)),{-1;-1;1}),ROW(1:10))

公式中OFFSET(C9,ROW(1:10),,,5)用F9查看是看不到取出的数的全貌的


ROW()+数据.rar
2楼
bluexuemei
我觉得这种方法很难理解。
3楼
laowuwyx
楼主可否解释一下公式中ROW(1:10)*5-{3,2,1}?
4楼
kakaco
诶。太难了。。~~能开个课程就好了。
5楼
fangjianp
看看,还有没有其他问题,一起解释,谢谢提问!
6楼
wise
那个截图不规范,我看不到啊
7楼
LOGO
那图我也看不到。
8楼
cookijie
感觉有点复杂

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap