如何在Excel的VBA中仅匹配单元格值的一部分而不是完全匹配?

时间:2019-11-07 20:11:26

标签: excel vba

我已经写了一个脚本,可以很好地进行精确匹配,但是我想重写它,以允许用户只键入其中一个条件的一部分。 userform仍应识别出它在另一张纸上来自哪一行,并用相应的信息填充单元格。该行必须同时包含txtsearchtxtname才能找到正确的行。

txtsearch的样本值:Instuctor,Mentor等。

txtname的样本值:Borkowski,Villarreal等

这就是我现在拥有的:

Private Sub CommandButton1_Click()
Dim ws As Worksheet, cel As Range
    Set ws = Sheets("The Goods")
    For Each cel In ws.Cells(2, 2).Resize(ws.Cells(Rows.Count, 2).End(xlUp).Row).Cells
        If cel.Value = Me.txtname.Value And cel.Offset(, 2).Value = Me.txtsearch.Value Then
           currentrow = cel.Row
            Me.txt1.Value = cel.Offset(, 3).Value
            Me.txt2.Value = cel.Offset(, 1).Value
            Me.txt3.Value = cel.Offset(, 4).Value
            Me.txt4.Value = cel.Offset(, 5).Value
            Me.txt5.Value = cel.Offset(, 6).Value
            Me.txt6.Value = cel.Offset(, 7).Value
            Me.txt7.Value = cel.Offset(, 8).Value
            Me.txt8.Value = cel.Offset(, 9).Value
            Me.txt9.Value = cel.Offset(, 10).Value
            Me.txt10.Value = cel.Offset(, 11).Value
            Me.txt11.Value = cel.Offset(, 12).Value
        End If
    Next cel
End Sub

1 个答案:

答案 0 :(得分:1)

如果您的意思是“仅一部分”,则需要instr函数。见下文...

If InStr(1, cel.Value, Me.txtname.Value, vbTextCompare) > 0 And  _ 
   InStr(1, cel.Offset(, 2).Value, Me.txtsearch.Value) > 0 Then

如果您只想向左指,那将起作用:

If Left(cel.Value, Len(Me.txtname.Value)) = Me.txtname.Value And _ 
   Left(cel.Offset(, 2).Value, Len(Me.txtname.Value)) = Me.txtname.Value Then