Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5257|回复: 10

[已解决]多个重复单元,如何只提取一个单元的内容。

[复制链接]
发表于 2011-7-25 16:11 | 显示全部楼层 |阅读模式
我在sheet1中有个日期列,其中的某些单元格是同一天,而我想根据这一列的日期在sheet2的某一列输出,要求是相同的日期只要一个。请高手解答,要用什么函数或公式?
最佳答案
2011-7-26 01:06
不好意思,这么晚了才回帖。
根据公式:=LOOKUP(2,1/(COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1),Sheet2!$A$2:$A$11)

我们很难看明白这到底是怎么回事,主要是LOOKUP函数用法比较高深。
这个公式要分为四个部分:
第1部分:=COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)
查找$A$1:A1这个区域的值在Sheet2!$A$2:$A$11这个区域中的个数。
第2部分:COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1
对查找到的结果进行判断小于1的,表示就只有1个的存在的,小于1的就等于TRUE,否则为FALSE。
第3部分:1/(COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1)
对第2部分得到的结果数组被1除,因为经过第2部分计算后会有TRUE或者有FALSE值存在,而1除以TRUE等于1(因为TRUE=1嘛),而1除以FALSE则等于#DIV/!值(因为FALSE=0嘛)
第4部分:=LOOKUP(2,1/(COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1),Sheet2!$A$2:$A$11)
这个部分就比较难理解了。
因为在第1部分中COUNTIF函数的第1个参数是$A$1:A1这个,请注意,前面的A1是使用的绝对引用方式,在进行公式向下填充的时候其位置是不会改变的,而后面的A1是相对引用,它进行填充的时候是会改变位置的(这点至关重要)。
根据COUNTIF函数查找值不断的变化,得到的结果也在变化,而LOOKUP函数,就会在第3个参数中的数组值里从最后一个值向上面移动得到COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)这个公式中最后一个为零的位置的值(其位置与LOOKUP函数第3个参数相对应)。
这一步可以用公式求值去发现的。

对于LOOKUP函数的用法,实际是用了一种二分法,而这个二分法我在这里也做不了多的解释,原因1:本人对这个二分法理解还不是很透彻的,怕误人子弟;原因2:内容太多了
所以我只能提供一个地址给大家:
原发源地:http://club.excelhome.net/thread-113915-1-1.html
经过整理的:http://www.exceltip.net/thread-5109-1-1-48044.html
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-7-25 16:12 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-7-25 16:17 | 显示全部楼层
回复

使用道具 举报

发表于 2011-7-25 16:22 | 显示全部楼层
用EXCEL的高级筛选功能即可完成。
2003中,在数据——筛选——高级筛选中
2007中,在数据选项卡——筛选下楼都的旁边,“高级...”的字样
一点你就会了
回复

使用道具 举报

发表于 2011-7-25 17:06 | 显示全部楼层
这是给你做的一个列子
=LOOKUP(2,1/(COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1),Sheet2!$A$2:$A$11)

下面是布置效果图:
1.jpg

由于时间关系(下班了,急着回家),暂时不能给你讲解这公式是什么意思,等我晚上空了,一定补上。不好意思哈,请谅解!
回复

使用道具 举报

发表于 2011-7-25 20:43 | 显示全部楼层
期待讲解。
回复

使用道具 举报

 楼主| 发表于 2011-7-25 20:54 | 显示全部楼层
回复 EXCEL-YQ 的帖子

对公式和函数的讲解是我最期待的,,等着你的讲解,谢谢。
回复

使用道具 举报

发表于 2011-7-25 21:00 | 显示全部楼层
筛选不重复值,一步到位
回复

使用道具 举报

发表于 2011-7-26 01:06 | 显示全部楼层    本楼为最佳答案   
不好意思,这么晚了才回帖。
根据公式:=LOOKUP(2,1/(COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1),Sheet2!$A$2:$A$11)

我们很难看明白这到底是怎么回事,主要是LOOKUP函数用法比较高深。
这个公式要分为四个部分:
第1部分:=COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)
查找$A$1:A1这个区域的值在Sheet2!$A$2:$A$11这个区域中的个数。
第2部分:COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1
对查找到的结果进行判断小于1的,表示就只有1个的存在的,小于1的就等于TRUE,否则为FALSE。
第3部分:1/(COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1)
对第2部分得到的结果数组被1除,因为经过第2部分计算后会有TRUE或者有FALSE值存在,而1除以TRUE等于1(因为TRUE=1嘛),而1除以FALSE则等于#DIV/!值(因为FALSE=0嘛)
第4部分:=LOOKUP(2,1/(COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)<1),Sheet2!$A$2:$A$11)
这个部分就比较难理解了。
因为在第1部分中COUNTIF函数的第1个参数是$A$1:A1这个,请注意,前面的A1是使用的绝对引用方式,在进行公式向下填充的时候其位置是不会改变的,而后面的A1是相对引用,它进行填充的时候是会改变位置的(这点至关重要)。
根据COUNTIF函数查找值不断的变化,得到的结果也在变化,而LOOKUP函数,就会在第3个参数中的数组值里从最后一个值向上面移动得到COUNTIF($A$1:A1,Sheet2!$A$2:$A$11)这个公式中最后一个为零的位置的值(其位置与LOOKUP函数第3个参数相对应)。
这一步可以用公式求值去发现的。

对于LOOKUP函数的用法,实际是用了一种二分法,而这个二分法我在这里也做不了多的解释,原因1:本人对这个二分法理解还不是很透彻的,怕误人子弟;原因2:内容太多了
所以我只能提供一个地址给大家:
原发源地:http://club.excelhome.net/thread-113915-1-1.html
经过整理的:http://www.exceltip.net/thread-5109-1-1-48044.html
回复

使用道具 举报

 楼主| 发表于 2011-7-26 08:50 | 显示全部楼层
回复 EXCEL-YQ 的帖子

一早起来看到你的详细解释,一句话,太感动了!而且说得清楚明白,谢谢了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-28 16:47 , Processed in 0.341651 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表