Juntando algumas UDF montei uma lógica que deve lhe atender.
Crie um módulo no arquivo e insira os codigos abaixo:
Function ENTRE(iIncial As Integer, iFinal As Integer)
Dim sResultado As String
Dim i As Long
sResultado = iIncial
For i = iIncial + 1 To iFinal
sResultado = sResultado & ";" & i
Next i
ENTRE = sResultado
End Function
Function ExtractElement(str, n, sepChar)
Dim x As Variant
x = Split(str, sepChar)
If n > 0 And n - 1 <= UBound(x) Then
ExtractElement = x(n - 1)
Else
ExtractElement = ""
End If
End Function
Function VALORES(sTexto As String)
Dim i As Integer
Dim sTexto2 As String
Dim sResultado As String
For i = 1 To VBA.Len(sTexto) - VBA.Len(VBA.Replace(sTexto, ";", "", , , vbTextCompare)) + 1
sTexto2 = ExtractElement(sTexto, i, ";")
If VBA.InStr(1, sTexto2, "-", vbTextCompare) > 0 Then
sTexto2 = ENTRE(ExtractElement(sTexto2, 1, "-"), ExtractElement(sTexto2, 2, "-"))
End If
sResultado = sResultado & ";" & sTexto2
Next i
VALORES = sResultado & ";"
End Function
Agora na planilha a fórmula matricial (CTRL+SHIFT+ENTER) será:
=SOMA(SE(ÉERROS(LOCALIZAR(";"&G2:G11&";";";"&Valores(C2)&";"));"";H2:H11))
Veja modelo.
Abraços!
Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/
Postado : 20/07/2016 8:15 am