怎样在EXCEL公式中关连两个有包含关系值?

有两个表,一个表是客户名称的简称,有300行;另一个表是客户名称的全称,有1000行。现想把简称的客户对应到全称的客户表中,请问怎样关连?

可以用索引函数INDEX及匹配函数MATCH来做,但前提是你这两个表中得有能索引的数据,即同一个客户,两个表中都得有一样相同的数据,且此数据具有唯一性才能找得准。追问

现在就是在两个表中没在相同的数据,如:
表1:
序号 简称
1 A
2 B

表2:
序号 全称
1 王B王王
2 李C李
3 A张张

想把表1的简称列到表2对应的行边。请问有办法吗?

追答

找规律!你能把规律定下来就好办了,没有规律,找不准,还不如不做。
表2中,字符串A是否只存在于3#客户?

追问

我的简称与全称的关系如下:
全称:广州丰彩彩印有限公司
简称:丰彩
即简称是除去命名开始的"....市”和"...公司“的结尾部分。只取了中间部分。

追答

只要其它公司中没有“丰彩”两字都好办,其它的也如此。
用EXCEL内部函数我无法办到,但编个宏,用自定义函数还是可以做到的。
过程如下:
按Alt+F11,打开VBA编辑器,插入模块,复制以下程序:
Function MyMatch(ByRef FindRange As Range, ByRef FindRegion As Range) As Long
For Each rgRange In FindRegion
If InStr(1, rgRange.Value, FindRange.Value, vbTextCompare) > 0 Then
MyMatch = rgRange.Row
Exit Function
End If
Next
End Function
关闭VBA编辑器,再返回EXCEL工作表中的表1。
假设表2中公司地址在C列,而表1的C列为对应的全称,D列为对应的公司地址,则表1中的C2单元格公式为:
=IF(MyMatch(B2,Sheet2!B:B)=0,"",INDEX(Sheet2!B:B,MyMatch(B2,Sheet2!B:B)))
D2公式为:
=IF(MyMatch(B2,Sheet2!B:B)=0,"",INDEX(Sheet2!C:C,MyMatch(B2,Sheet2!B:B)))
C2、D2公式往下复制即可得到。其余的数据关联类似。
公式意义:如能在表2中找到表1中简称的字符,则得到相关列的数据,否则为空。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-13
可以使用字串位置查找函数FIND()试试。

但一般不会全部有效,毕竟简称是人为的取舍,没有统一规范。
相似回答