查找部分字符串从相应的列和行返回数据(VBA)

时间:2016-03-21 10:53:22

标签: vba excel-vba search lookup excel

我有一个客户端/工作数据库,我希望能够对其进行部分和完整搜索。该数据库包括至少19个不同的数据,例如公司名称,公司地址,联系点,工作开始和结束日期,工作收入等。

我有一个搜索字段,我可以输入不同的列输入并搜索相关的客户端。例如,如果我键入客户端名称,它将返回该客户端的所有作业。如果我搜索201X,它将返回201X年完成的所有工作。此返回的数据将填充为搜索框下方的列表。

我目前的问题是我无法进行部分搜索。例如。我必须输入“通用电气”,而不是“电气”。我使用的VBA代码如下所示。任何帮助将不胜感激!

Option Compare Text 
Sub SearchClientRecord()

Dim Search As String 
Dim Finalrow As Integer 
Dim SearchFinalRow As Integer 
Dim i As Integer 
Dim scs As Worksheet 
Dim scd As Worksheet

Set scs = Sheets("Client Search") 
Set scd = Sheets("Client Database")

scs.Range("C19:S1018").ClearContents

Search = scs.Range("C12") 
Finalrow = scd.Range("D100000").End(xlUp).Row 
SearchFinalRow = scs.Range("D100000").End(xlUp).Row

For j = 3 To 19 
For i = 19 To Finalrow

If scd.Cells(i, j) Like Search Then 
scd.Range(scd.Cells(i, 3), scd.Cells(i, 19)).Copy
scs.Range("C100000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats 
End If 
Next i 
Next j 
scs.Range("C19:S1018").Select
    scs.Range("$C$18:$S$1009").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6 _ , 7), Header:=xlYes

Call Border Columns("C:S").HorizontalAlignment = xlCenter

End Sub 
Sub AddJobDetail() 
JobDetailForm.Show 
End Sub

1 个答案:

答案 0 :(得分:2)

使用Instr函数在另一个字符串中找到一个字符串 - https://msdn.microsoft.com/en-us/library/8460tsh1(v=vs.90).aspx

e.g。替换

If scd.Cells(i, j) Like Search Then 

if Instr(scd.Cells(i,j), Search) > -1 then

但是如果你有'通用电气'和'电动汽车',当然要小心打字'电':)