Meu problema é que tenho um critério escrito como uma string em uma célula, por exemplo ">= 50" está na célula A1. Posso usar isso facilmente com SUMIFS e COUNTIFS, pois essas funções consideram os critérios booleanos como uma string. Então COUNTIFS(range, A1) me diria quantos itens no intervalo são maiores ou iguais a 50.
Eu quero ser capaz de fazer isso com uma função semelhante a IF (apenas algo que avalia um teste lógico), mas parece que a única maneira de avaliar um booleano na função IF é usar as operações booleanas reais e não uma linha. Então, eu quero o equivalente a IF(range >= 50, 1, 0) quando aplicado a uma matriz (portanto, o resultado deve ser um intervalo de 1s e 0s, dependendo se a condição for satisfeita), mas em vez disso, a sintaxe seria algo como IF_new(intervalo, ">= 50", 1, 0).
Meu objetivo final é usar a função de estilo IF_new(...) dentro de um SUMPRODUCT() (como um indicador para quais linhas devem ser incluídas). Então, estou procurando especificamente uma maneira de fazer isso usando ">= 50" (para que o booleano esteja contido dentro de uma string e seja avaliado dessa forma, como em COUNTIFS e SUMIFS) dentro da função, em vez de apenas >=50.
Isso é possível sem usar VBA? Desde já, obrigado!
Responder1
Não existe um método padrão para transformar =">=50"
uma célula em uma instrução IF booleana. Uma referência à célula que contém=">=50"
podeser usado em CONT.SE ou SUMIF, mas normalmente não funcionam bem em fórmulas SUMPRODUCT.
Use OFFSET para isolar cada célula em um intervalo como singularfaixacontra os critérios como texto em COUNTIF para fornecer um On/Off em uma operação SUMPRODUCT.
=SUMPRODUCT(COUNTIF(OFFSET(A1, ROW(1:6), 0, 1, 1), A1), B2:B7, C2:C7)
Você provavelmente poderia fazer isso com EVALUATE e intervalos nomeados também.