第一种办法:
在B2输入公式
=IF(A1<>"",IFERROR(INDEX(A表!B:B,MATCH("*"&B表!A1&"*",A表!I:I,)),""),"")
往下拉,如果数据很多,会影响打开工作表的速度
第二种办法:
按ALT+F11键打开VBA编辑器
双击左边的B表,复制如下代码:
1234567891011121314Private Sub Worksheet_Change(ByVal Target As Range)If Target.Column = 1 Then With Sheets("A表") For Each trng In Target For i = 2 To .[I65536].End(xlUp).Row If trng.Value = "" Then trng.Offset(0, 1).Value = "" If .Cells(i, 9).Value Like "*" & trng.Value & "*" And trng.Value <> "" Then trng.Offset(0, 1).Value = .Cells(i, 2).Val编范独预点的大ue: Exit For End If Next Next End WithEnd IfEnd Sub这个好处是不用每次拖公式,而且如果数据量多,不会因为公式占用单元格,导致文件速度变慢!
追问 : VBA可以了,比公式多了个邮件,客户名只要几个关键字也能查找对应的单号。
只是如果一个客户对应多个单号,还是抓不到多个单号数据,不过还是采纳吧,追问的问题我另起一个提问
追答 : 开始不知道可能对应多个单号,把这段代码的第八行修改成:col=col+1:trng.Offset(0, col).Value = .Cells(i, 2).Value如果有匹配到多个单号,自动会在后续C列,D列....填充
也可以将第8行修改成:1trng.Offset(0, 1).Value = .Cells(i, 2).Value & vbcrlf & trng.Offset(0, 1).Value这样就只会在单个单元格中保存所有单号,用换行符连接,在程序开头加一句trng.Offset(0, 1).Value=""
保证每次输入名字之前,后面单元格内为空.