Posso usar uma instrução IF como um parâmetro em uma função COUNTIF?

0

Se alguém puder ajudar a melhorar o título, por todos os meios. Eu tenho lutado com isso por um tempo ...

Estou usando o Excel para analisar uma lista de nomes de arquivos para possíveis problemas ... caracteres especiais, tamanho excessivo, etc., antes de executá-los por meio de um script. Agora, tenho uma coluna para testar a condição e um COUNTIF para contar as ocorrências dos resultados do teste.

Considere:

COL A          COL B                                COL C
filename       =IF(LEN($A1)>200,"LONGNAME","")      =COUNTIF(B1:B10000,"LONGNAME")

Eu gostaria de simplificar isso para algo que é apenas COUNTIF (anythingInColumn, isLong) sem ter que criar uma coluna separada para testar se algo "é longo".

Considere:

COL A          COL B                               
filename       =COUNTIF($A,LEN($A>200))

O problema com o acima é que não vejo nada que explicitamente teste linha por linha para minha condição, quando tentei, não parecia haver um teste implícito de linha por linha. Eu

É algo como isto factível, ou existe outra função para fazer isso em uma única etapa?

    
por dwwilson66 18.09.2013 / 16:41

3 respostas

3

Você deve ser capaz de usar uma fórmula de matriz: digite o seguinte em C1 e pressione Ctrl-Shift-Enter:

=SUM(IF(LEN(A1:A10000)>200,1,0))

Você precisa do IF para converter o booleano em (0,1) e o SUM em todos. (Você pode usar A:A em vez de um número de linha explícito, mas pode ser mais lento.)

    
por 18.09.2013 / 17:08
2

Existe uma maneira de usar SUMPRODUCT para somar os valores e -- para converter True/False em 1/0 .

A equação no seu caso seria:

=SUMPRODUCT(--(LEN(A1:A10000)>200))

e não é necessária uma fórmula de matriz, pois o sumproduct está esperando um array.

O Excel avalia a LEN(A1:A10000)>200 como uma lista de 10.000 itens de True/False .
O -- altera a lista de True/False para uma lista de 0/1
O SUMPRODUCT soma todos os 1s (nenhum produto, já que estamos apenas fornecendo uma matriz de 1 dimensão.

Observe que esse método também pode ser usado para verificar vários critérios e contar apenas os itens em que ambos são verdadeiros (AND). Nomes de arquivos com letra de unidade e mais de 200 caracteres podem ser encontrados com

=SUMPRODUCT(--(LEN(A1:A10000)>200),--(MID(A1:A10000,2,1)=":"))

Se você precisar verificar vários critérios, as duas verificações deverão ter o mesmo tamanho:

=SUMPRODUCT(--(LEN(A1:A10000)>200),--(MID(A1:A7777,2,1)=":"))

dará um erro

    
por 18.09.2013 / 18:50
1

=SUM(IF(LEN($A:$A)>200,1,0)) Ctrl + Shft + Enter deve resolver o problema.

Se não, =SUMPRODUCT(--(LEN($A:$A)>200)) também funcionará.

    
por 18.09.2013 / 18:47