@osvaldomp Eu consegui usando o código que você escreveu, mas mudei algumas coisas
Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, CriteriaTRange As Range, ConditionT As Variant, CriteriaQRange As Range, ConditionQ As Variant, ConcatenateRange As Range, Optional Separator As String = "/") As Variant
'ESSA FORMULA É PARA ENCONTRAR A REFERENCIA EXATA DO QUE ESTAMOS PROCURANDO
'EXEMPLO DE FORMULA
'=@ConcatenateIf(A1:A7;F2;C1:C7;G2;D1:D7;0;C1:C7;" / ")
'EX. 'A1:A7 = ONDE A REFERENCIA DE BUSCA ESTA
'EX. F2 = O QUE DEVE PROCURAR
'EX. B1:B7 = CRITÉRIO 1 DE PROCURA, ONDE DEVE PROCURAR
'EX. G2 = CRITÉRIO 1 DE BUSCA, NESSE EXEMPLO É O QUE TAMBÉM DEVE SER BUSCADO
'EX. D1:D7 = CRITÉRIO 2 DE PROCURA, ONDE DEVE PROCURAR
'EX. 0 = CRITÉRIO 2 DE BUSCA, NESSE EXEMPLO 0 É O QUE DEVE SER BUSCADO
'EX. C1:C7 = É ONDE ESTÃO OS RESULTADOS QUE PODEM SER RETORNADOS
'EX. OPCIONAL = COMO ELE IRA SEPARAR OS RESULTADOS ENCONTRADOS (NESSE EXEMPLO ELE IRA SEPARAR COM /
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
ConcatenateIf = CVErr(xlErrRef)
Exit Function
End If
If CriteriaQRange.Count <> ConcatenateRange.Count Then
ConcatenateIf = CVErr(xlErrRef)
Exit Function
End If
For i = 1 To CriteriaRange.Count
If CriteriaRange.Cells(i).Value = Condition And CriteriaTRange.Cells(i).Value = ConditionT And CriteriaQRange.Cells(i).Value = ConditionQ Then
xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
End If
Next i
If xResult <> "" Then
xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function
EX 1.
EX. 2
18_08_19_Concatenar conforme a marca_Patropi.rar