O cálculo da string do Excel funciona ... às vezes

1

Encontrei muitas respostas parciais a essa pergunta, mas não as estou implementando corretamente ou elas não correspondem exatamente ao meu problema. Eu tenho uma coluna e em cada célula existem dois números separados por dois pontos. Cada número pode ter um ou dois dígitos. (Exemplos: 1: 1, 1: 2, 12:10, 12:20, etc.) Eu preciso consultar a célula e retornar uma coisa se o número à esquerda do cólon for menor que o número à direita, e retorne outra coisa se o número à esquerda for maior ou igual ao número à direita. Eu tenho cálculos para extrair os números em cada lado do cólon:

=LEFT(E2,FIND(":",E2)-1)

e à direita do cólon:

=MID(E2,FIND(":", E2)+1,LEN(E2))

Neste exemplo, os números com os dois pontos estão na célula E2. Eu tenho outro cálculo para comparar os dois números e retornar o resultado desejado:

=IF((LEFT(E2,FIND(":",E2)-1))<(MID(E2,FIND(":",E2)+1,LEN(E2))),"Divider, ","Combiner, ")

A idéia é retornar "Divider", se o número à esquerda do cólon for menor que o número à direita e retornar "Combiner", se o número à esquerda for igual ou maior.

O que me frustra é que os cálculos para extrair os números em ambos os lados do cólon estão funcionando, e o cálculo para determinar qual é maior falha apenas quando o primeiro dígito do lado esquerdo do cólon é menor que o número o lado direito, mesmo que o número do lado esquerdo tenha um segundo dígito e seja, portanto, maior. Por exemplo, para 12: 3, ele retorna "Divider", embora 12 seja maior que 3 e deva retornar "Combiner". Mas eu sei que está vendo os dois dígitos de 12, porque a minha equação para extrair o número do lado esquerdo funciona.

Muito aprecie todas as sugestões. Obrigado. - Dan Littman

    
por Dan Littman 28.10.2016 / 18:31

2 respostas

1

É porque ESQUERDA, MÉDIA, DIREITA retornam uma string e "3" é maior que "12" conforme o texto vai por caractere.

Você precisa alterar os números para números, o -- faz isso:

=IF((--LEFT(E2,FIND(":",E2)-1))<(--MID(E2,FIND(":",E2)+1,LEN(E2))),"Divider, ","Combiner, ")
    
por 28.10.2016 / 18:38
1

Agrupe suas chamadas de função LEFT e MID em uma chamada VALUE :

=IF((VALUE(LEFT(E2,FIND(":",E2)-1)))<VALUE((MID(E2,FIND(":",E2)+1,LEN(E2)))),"Divider, ","Combiner, ")
    
por 28.10.2016 / 18:40