在上面的图片中,我必须从表2中搜索相应的sap代码。 通过使用像Master / 13或visa / chennai这样的词语,我们可以匹配来自表2的sapcode。
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)
它为我回来了......
答案 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
这应该可行我已经测试了