即是按照小组分辩来排序
发布日期:2024-06-21 17:54    点击次数:76

即是按照小组分辩来排序

送东说念主玫瑰,手多余香,请将著述共享给更多一又友

动手操作是熟练掌持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】键,想说懂你休止易!

两种规范破解稀奇要求的数字索求汇总专业破碎,都挺好用的!

本站仅提供存储作事,整个骨子均由用户发布,如发现存害或侵权骨子,请点击举报。