Solução genérica do VBA com expressões regulares
Este método deve cobrir suas necessidades. Ele também pode ser usado por outros usuários para extrair várias strings de uma determinada string com a ajuda de expressões regulares
- AbraseueditordeVBA(ALT+F11)
- Insiraumnovomódulo(!)ecoleocódigoabaixonele
VolteparaoExceleuseessafórmulaemumacélulaemquevocêdesejasuasaída
=REGEXTRACT(A1,"Fruit: .*?,")
Explicação da fórmula
-
=REGEXTRACT()
é sua nova fórmula personalizada. -
A1
é a célula onde seus dados de entrada são colocados -
Fruit: .*?,
é uma expressão regular para encontrar todas as ocorrências defruit
e corresponde até a próxima vírgula.
Function REGEXTRACT(objCell As Range, strPattern As String)
Dim objMatches As Object
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.IgnoreCase = True
RegEx.Global = True
RegEx.Pattern = strPattern
Set objMatches = RegEx.Execute(objCell.Value)
If objMatches.Count <> 0 Then
For Each objMatch In objMatches
REGEXTRACT= REGEXTRACT+ objMatch.Value
Next objMatch
Else: REGEXTRACT= ""
End If
End Function
As expressões Dica: Look-Behind e Look-Ahead não são suportadas em Mecanismo regex do VB. Portanto, não é trivial excluir a vírgula via RegEx. Mas é possível através de operações com strings VBA normais.