送东说念主玫瑰,手多余香,请将著述共享给更多一又友
动手操作是熟练掌持EXCEL的最快捷路线!
【置顶公众号】或者【设为星标】实时接管更新不迷途
图片
小伙伴们好,今天来和全球共享一说念烧脑的排序题目。说这说念题目难,是因为它包含有统一单位格,而况,要以统一单位格为分组,进行组内排序。
今天先容的的这两种规范,是惩办这类题目的两个常用手艺和手艺。此类型题目在平常责任中也通常会遭逢,有心的小伙伴们可要保藏好喽!
原题是这状貌的:
图片
将左侧的源数据按分组进行由大到小排序。一又友们有什么好的规范吗?
01按组排序
所谓按组排序,即是按照小组分辩来排序,先排第一组,再轮番排序背面的小组。
图片
在单位格H2中输入下列公式,三键回车并向下向右拖曳即可。
=INDEX(C$2:C$13,MOD(MAX(((LOOKUP(ROW($A$2:$A$13),ROW($A$2:$A$13)/($B$2:$B$13<>""))*(1-COUNTIF($H$1:H1,$C$2:$C$13)))/1%%%+$D$2:$D$13/1%+ROW($D$2:$D$13))*(LOOKUP(ROW($B$2:$B$13),ROW($B$2:$B$13)/($B$2:$B$13<>""),$B$2:$B$13)=LOOKUP("座",$B$2:$B2))),100)-1)
公式比较长,咱们底下一王人来领会一下。
想路:
LOOKUP(ROW($A$2:$A$13),ROW($A$2:$A$13)/($B$2:$B$13<>""))部分,这里使用的LOOKUP函数的一个常用手艺,目的是要用行标来填充空缺的单位格。公式的效用为{2;2;2;5;5;5;8;8;8;8;12;12}
(1-COUNTIF($H$1:H1,$C$2:$C$13))部分,目的是将在H列中依然索求到的数据从源数据中屏蔽掉,幸免其再次被索求。这么作念的原因咱们背面再评释
接下来咱们运行加权处理。上头两部分的效用相乘,并扩大1百万倍;同期将D列的数据扩大1百倍。这两者相加后再加上对应的行号。这部分的效用是{2086302;2094503;2060704;5072105;5080906;5002607;8019108;8010909;8024110;8013711;12006412;12081813}
接下来咱们看条目。
LOOKUP(ROW($B$2:$B$13),ROW($B$2:$B$13)/($B$2:$B$13<>""),$B$2:$B$13)部分,和上头先容的一样,讹诈LOOKUP函数用小组名来填充空缺单位格。其效用为{"第一组";"第一组";"第一组";"第二组";"第二组";"第二组";"第三组";"第三组";"第三组";"第三组";"第四组";"第四组"}
LOOKUP("座",$B$2:$B2)部分,跟着公式向下拖曳,它轮番会复返第一组、第二组、第三组和第四组。这亦然讹诈的LOOKUP函数的特质,“座”字在EXCEL中是一个比较大的汉字,在一个区域内查找“座”,若是查找不到,会复返其找到的终末一个字符
这两部分比拟较,即是条目,它详情了小组排序的限度。其效用为{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE},前三个TRUE就代表了是第一小组
上头整个这些加权和条目乘在一王人,效用如下{2086302;2094503;2060704;0;0;0;0;0;0;0;0;0},你看,非0部分即是第一小组的数据
讹诈MAX函数索求到最大值。这里不可用LARGE函数。因为LARGE函数有第二参数,第二参数跟着公式向下拖曳会按当然数序列增长。而咱们小组排序时每个小组都要按第一、第二、第三来索求数据的,因此这里不可使用LARGE函数。而要使用MAX函数,就要确保小组的每一个数值都有契机当上最大值。因此就需要借助(1-COUNTIF($H$1:H1,$C$2:$C$13))来处理。在第二行时,COUNTIF函数的查找限度是$H$1:H1,查找的效用是{0;0;0;0;0;0;0;0;0;0;0;0}, 安达市嘉列电动机有限公司1减去自后赢得的效用是{1;1;1;1;1;1;1;1;1;1;1;1}, 北京大力惠诚国际贸易有限公司相乘后示意及第全部的源数据,深圳市华申投资发展有限公司最终MAX函数取最大值前的限度是{2086302;2094503;2060704;0;0;0;0;0;0;0;0;0},取出的最大值是2094503;当公式拖曳到第三行时,COUNTIF函数的查找限度就造成了$H$1:H2,在这个限度内依然包含了第一个查找值“韩雪琳”,因此COUNTIF函数的效用即是{0;1;0;0;0;0;0;0;0;0;0;0},示意源数据中第二行的“韩雪琳”被找到。1减去自后赢得的效用是{1;0;1;1;1;1;1;1;1;1;1;1},示意源数据中除第二行外,其余都不错及第。最终MAX函数取最大值前的限度是{2086302;94503;2060704;0;0;0;0;0;0;0;0;0},取出的最大值即是2086302
取到最值后,再讹诈MOD函数对100求余,赢得了行号,终末再讹诈INDEX函数复返正确谜底
02全体排序
这种规范,咱们不去接洽统一单位格了,只看D列的数据。雷同,也需要进行加权处理。
图片
首选选中单位格区域H2:H13,并输入下列公式,三键回车证实。
=INDEX(C$2:C$13,MATCH(LARGE((9-SUBTOTAL(3,OFFSET($B2,,,ROW($1:$12))))/1%%+$D2:$D13,ROW($1:$12)),(9-SUBTOTAL(3,OFFSET($B2,,,ROW($1:$12))))/1%%+$D2:$D13,专业破碎))
想路:
SUBTOTAL(3,OFFSET($B2,,,ROW($1:$12)))部分,以单位格B2为基点向下偏移,偏移后的行高分辩是1、2、…、12行,再讹诈SUBTOTAL函数统计非空单位格个数。其运算效用为{1;1;1;2;2;2;3;3;3;3;4;4}
9-SUBTOTAL(3,OFFSET($B2,,,ROW($1:$12)))部分,是这说念题目的要津。它达成的大小的逆序,效用为{8;8;8;7;7;7;6;6;6;6;5;5}
(9-SUBTOTAL(3,OFFSET($B2,,,ROW($1:$12))))/1%%+$D2:$D13部分,扩大1万倍后,在加上D列的数值。这么就确保了所罕有据当先是按照第一组、第二组、第三组和第四组的顺序来陈设。其效用为{80863;80945;80607;70721;70809;70026;60191;60109;60241;60137;50064;50818},你看,前三个数据都是第一小组的,然而还莫得排序
LARGE((9-SUBTOTAL(3,OFFSET($B2,,,ROW($1:$12))))/1%%+$D2:$D13,ROW($1:$12))部分,讹诈LARGE函数按照从大到小的顺序陈设,其效用为{80945;80863;80607;70809;70721;70026;60241;60191;60137;60109;50818;50064}。你看,前三个数据都是第一小组的,而且也按照从大到小陈设了
接下来,讹诈MATCH函数来查找LARGE函数这部分效用中的每个数据在(9-SUBTOTAL(3,OFFSET($B2,,,ROW($1:$12))))/1%%+$D2:$D13这部分中的位置。其效用为{2;1;3;5;4;6;9;7;10;8;12;11}
终末,赢得位置信息后,讹诈INDEX函数复返正确谜底。
03底下这条函数亦然全体排序,雷同亦然区域数组公式。它不错看作念是上头第二个公式的纠正版。
图片
一又友们,这条公式你们概况看懂吗?
本期骨子闇练文献索求情势:
鸠合:https://pan.baidu.com/s/1Q0Joi9Ik-niBfOrmP1Za3w?pwd=rm8p
索求码:rm8p
好了一又友们,今天和全球共享的骨子即是这些了!心爱我的著述请共享、转发、点赞和保藏吧!如有任何问题不错随时私信我哦!-END-
长按下方二维码关切EXCEL应用之家
靠近EXCEL操作问题时不再迷濛无助
我就知说念你“在看”
保举阅读变短的下拉清单
依据要津字动态变更下拉清单,你会制作吗?
函数组合中有很多固定搭配,而这一组尤为驰名!
【SHIFT】键,想说懂你休止易!
两种规范破解稀奇要求的数字索求汇总专业破碎,都挺好用的!
本站仅提供存储作事,整个骨子均由用户发布,如发现存害或侵权骨子,请点击举报。