Por favor, note que as fórmulas nesta resposta precisam ser inseridas na célula C2
, então copiadas / preenchidas conforme necessário.
EDITAR: Acontece que é uma maneira de resolver o problema sem usar células auxiliares:
=
SUMPRODUCT(
($B2=$A$2:INDEX($A:$A,MATCH("*",$B:$B,-1)))*
(LEN($B$2:INDEX($B:$B,MATCH("*",$B:$B,-1)))-LEN(SUBSTITUTE($B$2:INDEX($B:$B,MATCH("*",$B:$B,-1)),C$1,"")))
)
Explicação: O termo $A$2:INDEX($A:$A,MATCH("*",$B:$B,-1))
e a versão correspondente da coluna B
são usados para ajustar dinamicamente os intervalos de origem. A fórmula é equivalente à seguinte versão estática aplicável à planilha de exemplo:
=
SUMPRODUCT(
($B2=$A$2:$A$11)*
(LEN($B$2:$B$11)-LEN(SUBSTITUTE($B$2:$B$11,C$1,"")))
)
A solução mais simples seria a seguinte fórmula:
=COUNTIFS($A:$A,$B2,$B:$B,"=*"&C$1&"*")
Infelizmente, isso falha no caso especial em que há mais de uma letra em uma célula. Por exemplo, o 'f' na célula B11
seria contado apenas uma vez.
Nós podemos resolver este problema de uma maneira feia e limitada, somando as contagens de múltiplas ocorrências. Por exemplo, o seguinte funcionará até um máximo de três ocorrências de qualquer caractere:
=COUNTIFS($A:$A,$B2,$B:$B,"=*"&C$1&"*")
+COUNTIFS($A:$A,$B2,$B:$B,"=*"&C$1&"*"&C$1&"*")
+COUNTIFS($A:$A,$B2,$B:$B,"=*"&C$1&"*"&C$1&"*"&C$1&"*")
Como alternativa, podemos usar células auxiliares. A seguinte fórmula copiada / preenchida em cada célula no intervalo C2:H11
faz exatamente isso:
=
IF(
""<>$A2,
LEN($B2)-LEN(SUBSTITUTE($B2,C$1,"")),
SUMIF($A:$A,$B2,C:C)
)
Breve explicação:
""<>$A2
seleciona se a célula é uma célula auxiliar (true) ou uma célula cinza resultante (false).
LEN($B2)-LEN(SUBSTITUTE($B2,C$1,""))
calcula o número de ocorrências da letra apropriada na célula apropriada.
SUMIF($A:$A,$B2,C:C)
soma as contagens da letra apropriada.