要查找同时存在于所有列中的数据,不会的只能靠眼睛,大佬却用这套函数组合拳!

文摘   2024-10-27 20:00   上海  




欢迎转发和点一下“看”,文末留言互动!

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





小伙伴们好,今天来和大家分享一道文本查找的题目。题目稍有复杂,但也是日常工作中常见的题目类型。学会了今天的逻辑思路后,今后处理同类型的题目将会轻松很多。

原题目是这样的:




同时存在于所有列中,即每一列中都有该数据。这个题目可以用COUNTIF函数来解决。且慢,观察一下源数据,B列中有一个重复值“深圳”,这个这解题过程中需要特别注意!



01

COUNTIF函数组合





在单元格H2中输入下列公式,三键确认后向下拖曳即可。

=INDEX(A$2:A$6,SMALL(IF(MMULT(SIGN(COUNTIF(OFFSET(A$2:A$6,,COLUMN($A:$C)),A$2:A$6)),ROW($1:$3)^0)=3,ROW(A$2:A$6)-1),ROW(A1)))

下面来详细解析一下这条公式。

OFFSET(A$2:A$6,,COLUMN($A:$C))

既然要查询每一列,我们就利用OFFSET函数首先构建一个53列的内存数组。

COUNTIF(OFFSET(A$2:A$6,,COLUMN($A:$C)),A$2:A$6)

利用COUNTIF函数对A$2:A$6中的数据统计其在这个内存数组中的个数。这部分返回的结果是{1,1,1;0,0,0;1,1,1;2,1,1;0,0,0}

注意上面的结果中有一个“2”,它对应的是“深圳”。

SIGN(COUNTIF(OFFSET(A$2:A$6,,COLUMN($A:$C)),A$2:A$6))

这时候还不能使用MMULT函数,原因同上,有重复值。先用SIGN函数将所有的非零正数都转换为“1”,方便后面MMULT函数来计算在这个内存数组中每行上的总和是不是3

MMULT(SIGN(COUNTIF(OFFSET(A$2:A$6,,COLUMN($A:$C)),A$2:A$6)),ROW($1:$3)^0)

MMULT函数矩阵求和。如果一个数据在每列中都有出现,那么行求和的结果一定等于3

同时这也是为什么先要把重复的“深圳”处理一下的原因。

IF(MMULT(SIGN(COUNTIF(OFFSET(A$2:A$6,,COLUMN($A:$C)),A$2:A$6)),ROW($1:$3)^0)=3,ROW(A$2:A$6)-1)

IF函数条件判断,这个很简单,不用赘述。

INDEX(A$2:A$6,SMALL(IF(MMULT(SIGN(COUNTIF(OFFSET(A$2:A$6,,COLUMN($A:$C)),A$2:A$6)),ROW($1:$3)^0)=3,ROW(A$2:A$6)-1),ROW(A1)))

利用INDEX函数返回正确答案即可。


本期内容练习文件提取方式:

链接: https://pan.baidu.com/s/1Ywlobhrc7ghJ6NDgyIfVgw?pwd=tsiu 提取码: tsiu 


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


-END-


长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助


我就知道你“在看”


推荐阅读

Excel应用之家
介绍、交流EXCEL各项功能在工作中的实际应用; 为你答疑解惑;分享各类图表、表格和模板;提供有偿代工服务。
 最新文章