excel里如何实现第一个表格A列文字对第二个表格A列所有内容查找包含关系,如包含则返回对应B列内容??

例如:
第一张表 a1为 江苏南京中山北路230号
a2为 江苏省苏州三香路17-1
a3为 上海市黄浦区山东中路20号102室
a4为 苏州市沧浪区人民路211号
第二张表 a1为 苏州 b1为 221000
a2为 南京 b2为 210000
a3为 上海 b3为 200000
a4为 北京 b4为 100000

如第一张表的A1,在第二张表的A1-A4中查找(A1-A4设为无重复的),结果在第二张表的A2中存在包含关系,并返回B2对应邮编210000。
以此类推。。。
最后关联的结果是第一张表内容为:
a1为 江苏南京中山北路230号 b1 210000
a2为 江苏省苏州三香路17-1 b2 221000
a3为 上海市黄浦区山东中路20号102室 b3 200000
a4为 苏州市沧浪区人民路211号 b4 221000

请高手指导下哈!!

这个问题好解决的。设定第一表的表名为“表1”,第二表的表名为“表2”,在B1输入=INDEX(表2!$A$1:$B$3000,MATCH(MID($A1,MIN(IF(ISERROR(FIND({"北京","南京","苏州","上海"},$A1)),4^8,FIND({"北京","南京","苏州","上海"},$A1))),2),表2!$A$1:$A$3000,0),2),下拉填充至你需要的行数。
如还有新的城市名要加入,可以在两个FIND函数条件参数里面添加。不过在空行里B列会出现#N/A,比较难看,可输入=IF(A1>10,INDEX(表2!$A$1:$B$3000,MATCH(MID($A1,MIN(IF(ISERROR(FIND({"北京","南京","苏州","上海"},$A1)),4^8,FIND({"北京","南京","苏州","上海"},$A1))),2),表2!$A$1:$A$3000,0),2),""),这样没有数据的行为空,显得干净。祝你成功! 显示的结果为:
A列 B列
江苏南京中山北路230号 210000
江苏省苏州三香路17-1 221000
上海市黄浦区山东中路20号102室 200000
苏州市沧浪区人民路211号 221000
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-03
=IF(ISNUMBER(SEARCH(Sheet2!$A$1,A1,1))=TRUE,Sheet2!$B$1,IF(ISNUMBER(SEARCH(Sheet2!$A$2,A1,1))=TRUE,Sheet2!$B$2,IF(ISNUMBER(SEARCH(Sheet2!$A$3,A1,1))=TRUE,Sheet2!$B$3,IF(ISNUMBER(SEARCH(Sheet2!$A$4,A1,1))=TRUE,Sheet2!$B$4,0))))
因本人是菜鸟,所以写出来的东西比较繁琐,但符合你的要求。希望有高手进行指导改进,非常感谢!追问

再请教下,如果2个表格都有几百几千行的话,该怎么处理,谢谢。

追答

我能想出来的就是这样了,水平有限,你看我写的函数,就是傻瓜式的拿第二张表里的一个一个去查找对比的,我只能说如果不止4个,还有第5个、第6个等等的话就照着继续添加了 - -# 汗,我个人认为基于函数的话我就只能做到这样的了,至于用VB什么的我就不会了。。

第2个回答  2012-02-03
我也想做这样一个邮编自动填入的表,邮编是全国的.可惜我们填入的地址难以实现标准化,有人喜欢连省名带地名,有人喜欢加"省市县区"不统一,所以一直没认真去做出来,感觉难以完成.追问

呵呵,经常用到的,一直没好的办法,感觉太不方便了。

追答

怕是没人会做的出来,除非地址格式能固定

第3个回答  2012-02-03
用VLOOKUP追问

VLOOKUP只能查找相同内容的,这种包含关系的貌似不可以。

追答

=IF(FIND(Sheet2!A1,Sheet1!A1),Sheet2!B1,"")

追问

测了下,抓不出来啊,谢谢

追答

=INDEX(Sheet2!B:B,SUMPRODUCT(COUNTIF(A1,"*"&Sheet2!$A$1:$A$4&"*")*ROW($1:$4)))

用这个公式吧,我重新修改的:=IF(A2="","",INDEX(Sheet2!B:B,MATCH(1,COUNTIF(A2,"*"&Sheet2!$A$1:$A$100&"*"),0))) 数组公式,输完公式后按数组键结束!

本回答被提问者采纳
第4个回答  2012-02-03
你的地址就只能这么乱吗?
相似回答