部分匹配搜索结果excel vba

时间:2017-03-21 08:13:28

标签: vba excel-vba excel

enter image description here

在上面的图片中,我必须从表2中搜索相应的sap代码。 通过使用像Master / 13或visa / chennai这样的词语,我们可以匹配来自表2的sapcode。 enter image description here

srchString = "visa/20160927/Chennai/FT"
Set rng = Worksheets("Rulebook_Temp").Cells.find(what:=srchString, After:=ActiveCell, LookIn:=xlFormulas, lookat:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)

它为我回来了......

3 个答案:

答案 0 :(得分:0)

您真正需要的是删除源和目标中卡片类型的日期部分,然后您可以进行简单的查找。如果您在单元格a/b/c/d中有A1字符串,则会返回a/c/d

=IF(LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))>2,REPLACE(A1,FIND("/",A1),FIND("/",A1,FIND("/",A1)+1)-FIND("/",A1),""),A1)

它还会检查以确保有多个/,因此在a/b的情况下,该值将保持不变。因此,这也适用于您的premium/007

答案 1 :(得分:0)

您可以通过按如下方式遍历单元格来完成此操作

Private Sub CommandButton1_Click()
Dim rng As Range
Set rng = ThisWorkbook.Sheets(1).Range("A1:A60")

Dim foundString, delimiterStr As String
Dim object() As String
delimiterStr = "||"
Dim n As Integer
For n = 1 To rng.Rows.Count

If CStr(rng.Cells(n, 1).Text) Like "*visa/20160927/Chennai/FT*" Then

foundString = foundString & CStr(rng.Cells(n, 1).Text) & delimiterStr 

End If
Next n

object = Split(foundString, delimiterStr)

Dim rng_1 As Range

Set rng_1 = ThisWorkbook.Sheets(1).Range("B1")

Dim i As Integer

For i = LBound(object) To UBound(object)

rng_1.Offset(i + 1, 0).Value = object(i)

Next

End Sub

答案 2 :(得分:0)

你也可以尝试一下 使用excel数组

使用它来返回包含代码的行

如果(ISNUMBER(FIND( “主/ 13”,Sheet 2中$ A $ 2:$ A $ 50.1)),ROW(Sheet 2中$ B $ 2:$ B $ 50))

然后使用SMALL返回找到匹配的工作表2上的第一行

小(IF(ISNUMBER(FIND( “主/ 13”,Sheet 2中$ A $ 2:$ A $ 50.1)),ROW(Sheet 2中$ B $ 2:$ B $ 50)),1)

然后使用index返回值

INDEX(Sheet 2中$ B $ 2:$ B $ 50 SMALL(IF(ISNUMBER(FIND( “主/ 13”,Sheet 2中$ A $ 2:!$ A $ 50.1)),ROW(Sheet 2中$ B $ 2 :$ B $ 50)),1))

以数组形式输入Control + Shift + Enter

这应该可行我已经测试了