Se você sempre tiver três letras nas células da Linha 1, poderá usar:
=SUM(--ISNUMBER(SEARCH(MID(B$1,{1,2,3},1),$A2)))
Esta é uma evolução incremental da resposta de Laurent. Eu fiz algumas otimizações.
Primeiro de tudo,
IF (
Boolean_value
, 1 , 0)
é um pouco redundante, já que TRUE tem o valor 1 e FALSE tem o valor 0.
Os booleanos podem ser prontamente convertidos em seus inteiros equivalentes com o prefixo --
;
abreviação de - ( - (
value
) )
, isso preserva o valor numérico
mas coage o tipo para inteiro.
E então o {1,2,3}
é uma matriz que (com a função SUM
)
elimina a necessidade de adicionar três termos quase idênticos.
Para manipular cadeias na Linha 1 com comprimentos variados, use
=SUM(--ISNUMBER(SEARCH(MID(B$1,ROW(INDIRECT("1:"&LEN(B$1))),1),$A2)))
Esta é como a primeira resposta
exceto que obtemos o comprimento da string na parte superior da coluna, LEN(B$1)
,
e concatená-lo com a string " 1:
", formando algo como " 1:3
".
Isso parece um intervalo de linhas, e a função INDIRECT
trata exatamente desse jeito,
retornando o intervalo de endereços $1:$3
.
Em seguida, ROW()
desse valor retorna a matriz {1,2,3}
.
Este é um truque para criar uma matriz de números consecutivos
cujo começo e fim não são predeterminados.
A fórmula acima deve ser digitada com Ctrl + Deslocar + Enter .
Eu não tenho certeza do porque e o primeiro não.
Seu exemplo / ilustração faz com que pareça que suas strings têm espaços incorporados.
Se isso é verdade (mas você não quer que os espaços contem), a fórmula se torna
=SUMPRODUCT(--(MID(B$1,ROW(INDIRECT("1:"&LEN(B$1))),1)<>" "),--ISNUMBER(SEARCH(MID(B$1,ROW(INDIRECT("1:"&LEN(B$1))),1),$A2)))
que também deve ser digitado com Ctrl + Deslocamento + Enter .