匹配Excel VBA中的部分字符串

时间:2017-05-15 10:26:39

标签: excel excel-vba vba

我在VB宏中工作,其中AUT Excel包含5张纸。在第3张表中我有6列

在第5张。我有3个输入框和3个输出框。 如果用户从inputbox1,inputbox2和inputbox 3的第1列,第2列和第3列输入部分字符串,则相应的结果应显示在outputbox1,outputbox2,outputbox3

但是如果输入字符串与具有更多值的数据进行比较,则代码不起作用。所以它就像在if条件下对这个值进行硬编码一样是不可行的。

    `text3 Like "*NB" Or text3 Like 
    "*NS" Or text3 Like "*NF" Or text3 Like "*PE")`

我从没有显示结果的答案中得到了这段代码

`If (text1 Like ("*" & text4 & "*") And text2 Like ("*" & text5 & "*") And text3 Like ("*" & text6 & "*")) Then`

请告知我是否需要在IF条件中添加任何内容以匹配部分字符串

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

为什么不使用FindFindNext。这将找到匹配input1的第一个实例,然后测试是否还满足input2input3。如果是这样,它会设置您想要的值。如果没有,它会找到下一个可能的匹配。

Set Sheet1 = Worksheets(1)

Dim c As Range
Dim firstAddress As String
With Sheet1.Columns(1)
    Set c = .Find(input1, lookat:=xlPart)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            If sheet3.Cells(c.Row, 2).Value2 = input2 And sheet3.Cells(c.Row, 3).Value2 = input3 Then
                Sheet5.Cells(13, 3).Value2 = Sheet1.Cells(c.Row, 5).Value2
                Sheet5.Cells(13, 6).Value2 = sheet2.Cells(c.Row, 6).Value2
                Sheet5.Cells(13, 9).Value2 = sheet3.Cells(c.Row, 4).Value2
                Exit Do
            Else
                Set c = .FindNext(c)
            End If
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

答案 2 :(得分:0)

您是否尝试过如下

If (input1 Like ("*" & output4 & "*") And input2 Like ("*" & output5 & "*") And input3 Like ("*" & output6 & "*"))