= countif diz que “0001234” não é igual a “0001234” Como forçar a contagem para tratar cadeias como texto não números?

3

Eu tenho alguns códigos de produtos, alguns dos quais são números com zeros à esquerda, armazenados em uma planilha.

Eu estou fazendo algumas operações que dependem de um COUNTIF não igual a função (detalhes em comentários, mas não relevantes para a questão). O Countif parece quebrar ao lidar com strings contendo números com zeros à esquerda.

Para uma demonstração simples

Por exemplo, se A1 contiver "foo", então:

=COUNTIF(A1,"<>"&A1)

retorna 0. Ou seja, não há células em A1 que não sejam iguais a A1 (é claro).

Mas se A1 contiver "0001234" como texto, ele retornará 1, ou seja, A1 NÃO É IGUAL A A1

Mais informações: =countif(A1:"<>"&"1234") retorna 0, então o problema parece ser que o excel converte automaticamente a string "0001234" para o número 1234, mas apenas nos critérios e não no range e depois encontra "0001234" = / = 1234.

SOLUÇÃO ALTERNATIVA: crie uma coluna auxiliar com um caractere de texto indesejado anexado a todos os códigos. No momento, adicionei uma coluna auxiliar contendo="@" & X1 a todas as minhas listas, mas não é uma solução elegante.

    
por Some_Guy 30.08.2016 / 18:13

1 resposta

2

EDITAR : para alterar de adicionar NUL a adicionar * aos critérios.

Você verá um comportamento semelhante com os booleanos. Uma maneira que encontrei de "forçar" COUNTIF a não fazer as conversões é adicionando (ou pré-pendente) um * ao argumento de critérios. Por exemplo:

=COUNTIF(A1,"<>" & A1 & "*" )

retornará 0 mesmo com a string 0001234 em A1

O "*" força o COUNTIF a tratar A1 como texto no argumento de critérios. Isso falhará, é claro, se A1 contiver um número. Então você pode precisar testar para isso

=COUNTIF(A1,"<>" &  A1 & IF(ISNUMBER(A1),"","*"))

E aqui está uma captura de tela usando os dados que você postou no seu comentário:

ComousarCOUNTIFdestamaneiranãoécompletamenteàprovadebalas,vocêtambémpodeconsiderarafunçãoEXACT.

=N(NOT(EXACT(A2,B2)))

ou,aindamaissimples,seadiferenciaçãoentremaiúsculaseminúsculasnãoforumproblema:

=A2<>B2

retornaráosmesmosresultadosqueCOUNTIFcomocaracterecuringanoscritériosetambémpoderáexcluirapossibilidadedeointervaloqueestásendotestadoaparecerdentrodoscritérios.

Se eu entendi a fórmula COUNTIFS que você postou em um comentário acima, o seguinte pode fornecer o equivalente, mas eu gostaria de ver os dados com seus resultados esperados.

=SUMPRODUCT((A:A=A2)*(B:B<>B2))<1

Além disso, a fórmula funcionaria de maneira muito mais eficiente (rapidamente) se você pudesse limitar as referências da coluna inteira a ser menor que uma coluna inteira.

    
por 31.08.2016 / 12:50