Usando macros / VBA:
Public Function patSub(theValue As String) As String
result = theValue
Dim rango As Range
Set rango = ActiveSheet.Range("E1:F6")
strPattern = "{[4,9]{1}[0-9]{5}}"
Dim regEx As New RegExp
Dim matches
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
Set matches = regEx.Execute(theValue)
For Each Match In matches
On Error Resume Next
lookupmatch = Match.Value
lenMatch = Len(lookupmatch)
lookupmatch1 = Mid(lookupmatch, 2, lenMatch - 2)
lookupValue = Application.VLookup(lookupmatch1 + 0, rango, 2, Falso)
If lookupValue <> "Error 2042" Then
result = Replace(result, lookupmatch, lookupValue)
End If
Next
patSub = result
End Function
Abra VBA / Macros com alt + F11, insira um novo módulo em ThisWorkbook e cole o código no lado direito.
Para fazer com que o Regular Expressions funcione com o VBA, é necessário fazer referência a Microsoft VBScript Regular Expressions 5.5 :
- Selecione "Ferramentas / Referências"
- Marque a caixa ao lado de Expressões regulares do Microsoft VBScript 5.5
- Clique em "OK"
Esta UDF usa duas variáveis:
-
rango1
: A tabela de referência que contém os itens. -
strPattern
: a expressão regular.
Se os dados estiverem na célula A1
, então, em B1
, você precisará colocar =patSub(A1)
.