现在就是在两个表中没在相同的数据,如:
表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中简称的字符,则得到相关列的数据,否则为空。