A solução mais simples seria usar uma UDF. (Eu nem tenho certeza se é possível com uma fórmula padrão.)
Com uma planilha configurada assim:
Copieecoleocódigoaseguiremummódulopadrão:
'============================================================================================'Module:<anystandardmodule>'Version:0.1.1'Part:1of1'References:(Optional)MicrosoftScriptingRuntime[Scripting]'Source:https://superuser.com/a/1332369/763880'============================================================================================OptionExplicitPublicFunctionCountDistintMultiSelections_(_count_arrayAsRange_)_AsLongDimdictSelectionsAsObject'##EarlyBound##AsScripting.DictionarySetdictSelections=CreateObject("Scripting.Dictionary") '##Early Bound## = New Dictionary
Dim celCell As Range
For Each celCell In Intersect(count_array, count_array.Parent.UsedRange)
Dim varSelections As Variant
varSelections = Split(celCell.Value2, ", ")
Dim varSelection As Variant
For Each varSelection In varSelections
If dictSelections.Exists(varSelection) Then
dictSelections(varSelection) = dictSelections(varSelection) + 1
Else
dictSelections.Add varSelection, 1
End If
Next varSelection
Next celCell
CountDistintMultiSelections = dictSelections.Count
End Function
Digite a seguinte fórmula em C2
:
=CountDistintMultiSelections(B:B)
Explicação:
O código usa a função Split()
para separar as seleções individuais em cada célula e um dicionário para contar as seleções exclusivas.
Notas:
Para instalar o UDF, siga estas etapas:
- Pressione Alt + F11
- Selecione o item de menu
Insert
→Module
- Cole o código na janela principal