在VBA中使用搜索功能

在VBA中使用搜索功能,vba,excel,Vba,Excel,我花了几个小时试图想出一个解决办法,所以我给了我们并请求帮助 我有不同的产品(在单元格A2到A10中),它们是不同的术语。单元格中的描述为“烘焙5年奖”,也可以是“风格3年奖” 我需要使用搜索功能来确定它是否为3年或5年产品,然后在此基础上,我需要它将术语“3年”或“5年”复制到另一个工作簿中,即不复制描述中的其他词,例如Bake 我认为这个解决方案可以满足您的期望 您可以创建将为您的描述提取数字的函数: Function ExtractDigits(s As String) As String

我花了几个小时试图想出一个解决办法,所以我给了我们并请求帮助

我有不同的产品(在单元格A2到A10中),它们是不同的术语。单元格中的描述为“烘焙5年奖”,也可以是“风格3年奖”


我需要使用搜索功能来确定它是否为3年或5年产品,然后在此基础上,我需要它将术语“3年”或“5年”复制到另一个工作簿中,即不复制描述中的其他词,例如Bake

我认为这个解决方案可以满足您的期望

您可以创建将为您的描述提取数字的函数:

Function ExtractDigits(s As String) As String
Dim retval As String    
Dim i As Integer

retval = ""

For i = 1 To Len(s)
    If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" Then
        retval = retval + Mid(s, i, 1)
    End If
Next

ExtractDigits = retval
End Function

可以基于正则表达式使用此UDF

Function findYear(str As String) As String
    Set reg = CreateObject("VBScript.RegExp"):reg.Pattern = "\d+ year"
    Set matches = reg.Execute(str): findYear = matches(0).Value
End Function

我通常会在工作表中添加一个“帮助”列,然后在“帮助”列上进行筛选。在您的情况下,助手列将包含“2年”、“3年”、“5年”。下面是一个公式,您可以将其添加到helper列以获取年份号:=TRIM(MID(A1,FIND(“,A1),FIND(“year”,A1)+4-FIND(“,A1)))
Function findYear(str As String) As String
    Set reg = CreateObject("VBScript.RegExp"):reg.Pattern = "\d+ year"
    Set matches = reg.Execute(str): findYear = matches(0).Value
End Function