Excel精英培训网

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

[已解决]重复数据的精确匹配

[复制链接]
发表于 2014-8-2 19:03 | 显示全部楼层 |阅读模式
用什么函数能实现重复数据的精确查找
最佳答案
2014-8-2 19:40
把你的辅助项和公式都改了,看看这样是否是你需要的

12年第10周报表1 - 副本.rar

21.45 KB, 下载次数: 15

发表于 2014-8-2 19:40 | 显示全部楼层    本楼为最佳答案   
把你的辅助项和公式都改了,看看这样是否是你需要的

12年第10周报表1 - 副本.zip

22.37 KB, 下载次数: 20

评分

参与人数 1 +1 收起 理由
雨沫懿馨 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-8-2 19:41 | 显示全部楼层
回复

使用道具 举报

发表于 2014-8-2 20:05 | 显示全部楼层
回复

使用道具 举报

发表于 2014-8-2 20:36 | 显示全部楼层
非要用vlookup的话看这个公式
B29=VLOOKUP(C29,INDIRECT(TEXT(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1),"R0C00")&":R120C26",),27-MOD(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1),100),)三键下拉即可

vlookup解法.rar

21.25 KB, 下载次数: 6

回复

使用道具 举报

发表于 2014-8-2 21:13 | 显示全部楼层
  1. B29 =IF(C29="","",LOOKUP(,0/((T$39:T$120=C29)*(COUNTIF(B$28:B28,B$39:B$120)=0)),B$39:B$120))
复制代码
ENTER 輸入公式
下拉複製公式
回复

使用道具 举报

 楼主| 发表于 2014-8-3 00:01 | 显示全部楼层
hongqiqqq 发表于 2014-8-2 19:40
把你的辅助项和公式都改了,看看这样是否是你需要的

谢谢!是我想要的。能否解释下B列中的函数。我看不懂。谢谢!
回复

使用道具 举报

 楼主| 发表于 2014-8-3 00:03 | 显示全部楼层
tgydslr 发表于 2014-8-2 20:36
非要用vlookup的话看这个公式
B29=VLOOKUP(C29,INDIRECT(TEXT(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*1 ...

能解释下这个函数吗?我看不懂!
回复

使用道具 举报

发表于 2014-8-3 07:41 | 显示全部楼层
不会是要全解释吧??
回复

使用道具 举报

发表于 2014-8-3 07:49 | 显示全部楼层
雨沫懿馨 发表于 2014-8-3 00:03
能解释下这个函数吗?我看不懂!

=VLOOKUP(C29,INDIRECT(TEXT(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1),"R0C00")&":R120C26",),27-MOD(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1),100),)
外层不说了,结构吗,先说第二参数
INDIRECT(TEXT(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1),"R0C00")&":R120C26",)就是间接引用,
R120C26是R1C1样式,就是120行,26列,其实就是Z120,数据区域的最后一个
TEXT(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1),"R0C00")这部分也是调试成R1C1样式,
SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1)就是要找到这个单元格需要引用区域的起点,问题是你需要查找数据所在的区域是两列(X或Y),有些麻烦,IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120))这个意思就是把c29所在的单元格范围的行号与列标合起来,比如3956就是39行56列,这里面可能有好几个数呢(x或y里等于C29的会有好多个)。small的第二参数是这个的关键,COUNTIF(C$28:C28,C29)+1的意思就是说countif部分是说在c29上面的数()里面(C29是第一个)包含几个C29,比如前面有1个C29的值了,这次就从第二个等于C29的位置开始引用,依次类推。比如说这次的结果是5824,那么就是58行24列开始了(换成普通写法就是X58)
small转换格式(text)后就成R58C24了,
这样的话INDIRECT(TEXT(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1),"R0C00")&":R120C26",)的部分意思就是从开始的单元格(small部分)到(用冒号连起来,比如A1:B4)最后一个数据所在区域(Z120,R120C26),注意INDIRECT用R1C1样式的时候为indirect(R1C1样式,),这样就完成了引用区域(从满足条件的第一个到最后一个单元格区域)
下面说第三参数,27-MOD(SMALL(IF(X$39:Y$120=C29,ROW(X$39:Y$120)*100+COLUMN(X$39:Y$120)),COUNTIF(C$28:C28,C29)+1),100)
这样写是因为第二参数的结果可能是两列或3列,但需要引用的数据在最后一列,不知第二列还是第三列呀,作一判断
small部分的意思前面说过,不再多说,就是满足条件的单元格所在行数列数(比如2735为27行35列)列数在后面,这样的话用mod就可以取出来了(后俩位就取对100的余数),然后该区域最后一列(26)-开始的列数(比如说24)再加1就是最后一列所在引用区域的位置(比如,总共3列,最后一列就是3列,依次类推)
其余的就不再说了吧
言语笨拙,还请见谅

点评

强!!!!这么多字,打的手累啊  发表于 2014-8-3 07:56

评分

参与人数 2 +2 收起 理由
雨沫懿馨 + 1 很给力!
AmoKat + 1 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 04:27 , Processed in 0.374537 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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