繁体   English   中英

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

[英]How to Match just part of a cell's value instead of an exact match in VBA for Excel?

我已经编写了一个可以很好地进行精确匹配的脚本,但我想重写它以允许用户仅键入其中一个条件的一部分。 用户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

如果您的意思是“仅部分”,那么您需要的是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM