Preciso descobrir se uma string está contida em uma seleção de células. Não me importo com a posição, só quero entender se ela está presente nas células selecionadas ou não. Para fazer isso, uso a função FIND estendida nas células selecionadas. Recebo uma matriz de 0 e 1. Gostaria de REDUZIR para uma única célula que tenha 0 se na matriz houver todos os 0s e qualquer valor > 0 se houver pelo menos uma célula contendo 1. Tentei usar REDUZIR com a soma, mas sempre dá 0. Por quê?
=REDUZIR(0;SE(SEERRO(ENCONTRAR(Planilha1!B$7;INDIRETO("'"&A1&"'!A1:Z200"))=0;0)=0;0;1);LAMBDA(a;b;a+b))
Obrigado.
A parte interna da fórmula do OP é
IF(IFERROR(FIND(Sheet1!B$7;INDIRECT("'"&A1&"'!A1:Z200"))=0;0)=0;0;1)
Isso de fato gera uma matriz de 0s e 1s como o OP pretende, mas é um pouco mais trabalhoso do que o necessário e acrescenta um esforço desnecessário para entendê-lo.
Suspeito que o motivo subjacente seja que o OP ignorou (ou não sabe) que os resultados booleanos de
TRUE
eFALSE
podem ser tratados como os valores 1 e 0, respectivamente, quando incorporados a uma expressão aritmética.As sugestões nos comentários da pergunta de @Pb e @Ron Rosefield ilustram isso bem.
Ambas as sugestões envolvem uma função em torno de
FIND
(ISERR
em um caso eISNUMBER
no outro) que entrega um resultado booleano. Esses resultados são então incorporados em uma expressão aritmética - usando--boolean
e1-boolean
, respectivamente para obter o valor 0/1 desejado.Na minha opinião, vale a pena conhecer essa equivalência de booleanos e números em uma fórmula do Excel e essa foi minha motivação para postar esta resposta.