indirect+text:多行多列中提取不重复值(一)

小伙伴们好啊,今天要分享的内容是从多行多列中提取不重复值,用的还是indirect+text。先来看下数据源和提取后的效果。下图左表是数据源,是一些城市,其中有重复的。现在要提取出不重复的,并且放在一列,结果如F列和H列所示。F列是按行的方向提取的,H列是按列的方向提取的。

先来看下按行的方向提取的,在F2单元格输入公式=INDIRECT(TEXT(MIN(COUNTIF(F$1:F1,A$2:D$5)/1%%+ROW($2:$5)/1%+COLUMN(A:D)),"r0c00"),)&"",按ctrl+shift+enter三键结束,向下填充。

这个公式中由于要去重复的,所以用到countif的动态区域用法,不好讲解。我就先用另外一种方式说下大概的思路,虽然和公式的运行原理不太一样,但大体是相似的。

用每个城市(绿色区域中)在F列的空白区域(红色区域)中查找,如果找不到就把对应的城市放在F列的区域中。比如,第1次,在空白区域中查找杭州,找不到就把杭州放在空白区域的第1个单元格中。

第2次,在空白区域中查找哈尔滨,找不到把哈尔滨放在空白区域的第2个单元格中。

以此类推,。。。第5次,在F列的区域中查找北京,找到了就跳过,再查找下一个城市天津。大概就是这样的方式,直到把所有的城市都查找完。

下面来说下公式的计算过程:=COUNTIF(F$1:F1,A$2:D$5)这部分是在F1单元格中查找所有的城市,找不到的返回0,找到的返回1。结果如下图红色框所示,第1次肯定全都找不到。其实我们要找的就是第1个0对应的单元格位置,大家后面就会明白的。

=COUNTIF(F$1:F1,A$2:D$5)/1%%这部分就是用上一步的结果乘以10000,1%%就是万分之一,除以万分之一就是乘以一万,结果还是0。

=COUNTIF(F$1:F1,A$2:D$5)/1%%+ROW($2:$5)/1%+COLUMN(A:D)这部分是用上一步的结果加上行号乘以100,再加上列号,结果如下图红框所示。

=MIN(COUNTIF(F$1:F1,A$2:D$5)/1%%+ROW($2:$5)/1%+COLUMN(A:D))这部分用min取出上一步的最小值201,它刚好对应的就是第1个0出现的位置。剩下的就是用text转为文本型地址r2c01,然后用indirect转为真正的引用。就不详细说明了,参考昨天和前天的文章。这样F2单元格的结果就返回杭州。

当公式下拉到F3单元格时,公式会有所变化,countif的区域由F1:F1变为F1:F2。=COUNTIF(F$1:F2,A$2:D$5)这部分返回的结果如下图红色框所示,由于F2的结果变为杭州,所以城市中的杭州被找到了,会返回1。如绿色箭头所示。我们下一个要取的就是第1个0对应的哈尔滨。

=COUNTIF(F$1:F2,A$2:D$5)/1%%这部分是用上一步的结果乘以一万,这样1就变为10000,目的是让出现过的城市变为一个比较大的数字,用min取最小值的时候就不会把它们取到。

=COUNTIF(F$1:F2,A$2:D$5)/1%%+ROW($2:$5)/1%+COLUMN(A:D)这部分是加上行号和列号的效果,如红色框所示。再下一步我们就用min取出最小值202,然后用text转为r2c02,用indirect返回2行2列对应的哈尔滨。F3单元格就返回哈尔滨。其他单元格也是按这样的方式,大家自己查看,就不再详细说明。

再来看下按列的方向提取的,在H2单元格输入公式=INDIRECT("r"&MOD(MIN(COUNTIF(H$1:H1,A$2:D$5)/1%%+COLUMN(A:D)/1%+ROW($2:$5)),100)&"c"&INT(MIN(COUNTIF(H$1:H1,A$2:D$5)/1%%+COLUMN(A:D)/1%+ROW($2:$5))%),)&"",按Ctrl+shift+enter三键结束,向下填充。

思路主要是今天和昨天的结合,由于按列的方向提取,所以在列号上乘以100;用min取出的最小值对应的是几列几行,所以要把它拆分开再合并为几行几列,用的mod和int,目前没有想到其他办法。MIN(COUNTIF(H$1:H1,A$2:D$5)/1%%+COLUMN(A:D)/1%+ROW($2:$5))这一段公式重复用了2次,所以公式会比较长。

如果你有其他的方法,欢迎在留言区写出你的答案,让我们一起学习。

文件链接:

https://pan.baidu.com/s/1ndtlLsPsxlMYa6hStcChog

提取码:3xrx

(0)

相关推荐

  • VLOOKUP函数之另类用法,让领导对你刮目相看

    相信经常使用EXCEL的小伙伴们,对VLOOKUP函数并不陌生.这个函数是我们最常用的几个函数之一.相信,小伙伴们,也经常会用到这个函数.这里,咱们玩点其他的. 首先,给大家准备了源数据.如图: &l ...

  • 你还不会去重多列合并一列吗?快来看看这里吧!

    送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 小伙伴问了我这样一个问题:如何利用公式将下表中的多列合并为一列,而且要剔除重复值. 这个题目和我们之前的帖子如何 ...

  • 数字、文本、逻辑值和“”,排排队,比大小

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 小伙伴们啊,平时我们经常会遇到对数字进行比较(大小),可是,你知道吗,在E ...

  • 如何用公式将多列合并为一列

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! EXCEL函数总是可以给我们带来不断的惊喜.前一段时间,一位朋友问我了一个 ...

  • 一招解决多行多列变一列的问题

    前言 你是不是也有过类似的经历,将表格设计成横向格式,给统计和分析带来很大的不方便,其实正确的姿势是第二个,正确的表格应有标题和记录组成,不应该合并单元格,每一列具有相同的属性,每一行代表一条完整的记 ...

  • 解读分析多区域查找的难题

    说起查找 你可能想到我们最常用的 VLOOKUP或者INDEX+MATCH组合 基本可以解决大部分查询引用问题 当时有的时候由于数据布局问题,这个套路就搞不定了 今天的就是其中之一 对于新手这个使用函 ...

  • indirect+text:多行多列中提取不重复值(二)

    小伙伴们,大家好.今天要分享的内容还是多行多列中提取不重复值,但是要比昨天的难一点,今天的区域中包含空单元格.如下图所示.F列和H列是提取后的结果.F列是按行提取的,H列是按列提取的. 还是先来看按行 ...

  • 【Excel】多行多列中提取不重复姓名,其实很简单

    先看下面的数据源,是某学校的老师任课表,现在需要从中提取出不重复的所有老师姓名. 老师姓名分布在多行多列,如何才能快速提取出不重复的名单呢? 步骤一:插入数据透视表 依次按Alt  D  P键,调出透 ...

  • 从多行多列中提取不重复清单,其实很简单

    先来看数据源: 牛A同学是公式达人,给出的公式是这样的: =INDIRECT(TEXT(MIN((COUNTIF(E$1:E1,$A$2:$C$5)+(A$2:C$5<=''))/1%%+ROW ...

  • 使用Excel函数从列数据中提取不重复值的方法

    在工作中经常遇到需要将某个Excel表格中某列数据中不重复的值提取出来的情况,本文讲述了使用INDEX函数.SMALL函数.IF函数.ROW函数以及MATCH函数实现从Excel列数据中提取不重复值的 ...

  • 【Excel】获取一列中的不重复值,四种方法都有了

    获取不重复值的方法有很多,例如高级筛选法.透视表法.基础操作法和公式法.本例分别向大家介绍这四种方法如何使用. 高级筛选法获取不重复值: 首先,选中A列的数据区域,选择[数据]-[筛选]-[高级]. ...

  • 如何利用数据透视表从二维区域中提取不重复值?

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.今天来分享下如何从二维区域中提取不重复值.利用的方法是数据透视表的[多重合并计算数据区域]. -01- 二维区域中提取不重复值 要从下图左表二维区 ...

  • Excel中提取不重复值的 5 种操作,还不会的可以拿去开练了!

    表格中存在重复数值是我们经常遇到的一个问题,今天技巧妹整理了提取不重复值的5种常用操作,还不会的赶紧拿去开练. 1.删除重复值 利用[数据]选项卡下的"删除重复项"这一功能保留唯一 ...

  • 菜鸟记675-怎么从多行多列数据中提取不重复信息?

    万一您身边的朋友用得着呢? 各位朋友早上好,小菜继续和您分享经验之谈,截止今日小菜已分享600+篇经验之谈,可以文章编号或关键词进行搜索. 微信推送规则发生改变,如果您想看到小菜每个工作日的经验之谈, ...

  • VLOOKUP提取不重复值,很难吗?巧用辅助列秒解!

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.工作中有时需要提取不重复值,对于初学函数的小伙伴来说,复杂的数组公式难以理解.我们可以用辅助列的方法,通过vlookup函数实现提取不重复值的效果 ...