[英]How to Match just part of a cell's value instead of an exact match in VBA for Excel?
我已经编写了一个可以很好地进行精确匹配的脚本,但我想重写它以允许用户仅键入其中一个条件的一部分。 用户userform
仍应识别它来自另一张纸上的哪一行,并使用其相应信息填充单元格。 该行必须同时包含txtsearch
和txtname
才能找到正确的行。
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
如果您的意思是“仅部分”,那么您需要的是instr
function。 见下文...
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.