打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
三位大神写出不同公式长短各异,对函数理解越深公式愈加简洁明了!

送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

【置顶公众号】或者【设为星标】及时接收更新不迷路



小伙伴们好,今天和大家分享一则群友提出的问题。题目经过简化后如下。



要求对A列中着色的部分去重后排列。

题目要求很简单,我们该如何操作呢?我们来分析一下这道题目。

首先这肯定是一道提取不重复清单的题目。

其次,这道题目有以下几个特点:

单元格每隔两行间隔;在非着色区域有不同类型的数据干扰,因此,我们总体的思路也就有了。首先要确定不重复数据的范围,其次对着色区域定位,最后按照提取不重复清单的经典应用公式提取清单。


01

下面我们一起来看看如何书写这个公式。



在单元格C2中输入公式“=IFERROR(INDEX($A$2:$A$23,SMALL(IF(IFERROR((MATCH($A$2:$A$23,$A$2:$A$23,)=ROW($A$2:$A$23)-1),0)*((INT((ROW($A$2:$A$23)-2)/3)+1)=(ROUND((ROW($A$2:$A$23)-1)/3+1,0))),ROW($A$2:$A$23)-1,9^9),ROW(A1))),"")”,三键回车并向下拖曳即可。

思路:

  • (INT((ROW($A$2:$A$23)-2)/3)+1)部分返回一组序列{1;1;1;2;2;2;3;3;3;4;4;4;5;5;5;6;6;6;7;7;7;8}

  • 同理,(ROUND((ROW($A$2:$A$23)-1)/3+1,0))也返回一组序列{1;2;2;2;3;3;3;4;4;4;5;5;5;6;6;6;7;7;7;8;8;8},两组序列相同位置的部分就是源数据中着色的部分

  • 除此之外,我们还要将着色部分中的重复值去掉。这里使用MATCH=ROW的方法。这部分的结果是{TRUE;TRUE;TRUE;TRUE;TRUE;#N/A;TRUE;#N/A;#N/A;FALSE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE},这组序列中有三个地方有错误值,会影响到后面的计算结果,因此用IFERROR函数屏蔽错误值,最终这部分的结果为{TRUE;TRUE;TRUE;TRUE;TRUE;0;TRUE;0;0;FALSE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE}

  • 上述两部分条件相乘的结果是{1;0;0;1;0;0;1;0;0;0;0;0;0;0;0;1;0;0;0;0;0;1},条件为真时返回对应行号,为假时返回一个极大值9^9

下面的就很简单了,不用再详细介绍了。


02

可是上面的这个公式有些冗长,我们看看能不能精简一下啊!仔细观察一下源数据,我们发现着色部分的排列规律是在“1,2,3,1,2,3,1,2,3”这个结构中“1”的位置上的。因此我们只需要提取“1”这个位置上的数据即可。这样,上面这个公式可以精简如下。



在单元格C2中输入公式“=IFERROR(INDEX($A$2:$A$23,SMALL(IF(IFERROR((MATCH($A$2:$A$23,$A$2:$A$23,)=ROW($A$2:$A$23)-1),0)*(MOD(ROW($A$2:$A$23)-1,3)=1),ROW($A$2:$A$23)-1,9^9),ROW(A1))),"")”,三键回车并向下拖曳即可。

整体的思路还是一样的,只不过我们用“MOD(ROW($A$2:$A$23)-1,3)=1”来替代了“((INT((ROW($A$2:$A$23)-2)/3)+1)=(ROUND((ROW($A$2:$A$23)-1)/3+1,0)))”这部分。整个过时立刻看起来阅读性更强了。


03

还能不能再精简一下呢?由于着色部分只出现在“1”的位置上,和其它数据都没有关系。因此我们也不需要用MATCH=ROW这个技巧了。只需要直接提取“1”位置上所对应的数据,再利用COUNTIF函数,去除在本列中已经出现的数据就好了!



在单元格C2中输入公式“=IFERROR(INDEX($A$2:$A$23,MIN(IF((MOD(ROW($A$2:$A$23)-1,3)=1)-COUNTIF($C$1:C1,$A$2:$A$23),ROW($A$2:$A$23)-1,9^9))),"")”,三键回车并向下拖曳即可。

思路:

  • 利用IF函数,提取满足条件“MOD(ROW($A$2:$A$23)-1,3)=1”时对应位置的行号

  • 又因为要去除已经出现的数据,利用COUNTIF($C$1:C1,$A$2:$A$23)这个技巧去除已出现数据

  • 由于出现过的数据都已经被移除了,每次需要提取的新的数据所在位置肯定是最小的,因此将SMALL函数改为MIN函数

其余和前面的思路是一样的。


好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!

-END-


我就知道你“在看”

推荐阅读
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Excel隔N行求和,你是不是在找这条公式模板?收藏备用
VLOOKUP函数--查找多个相同的数据
“万金油”公式,INDEX SMALL IF ROW函数组合的三个应用案例解析
一篇文章带你全面掌握Excel中的各种数据查询知识与技巧
社群答疑精选01:不重复数据统计——如何统计员工负责的客户数?
「虐心」统计符合条件的不重复单元格个数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服