CassioFabre 27/3/2018, 11:47
Bom dia,
Como o tipo de dados do seu campo é text, mesmo que o que está inserido por vezes é integer, o mau funcionamento em relação a algarismos maiores que 10 se dá pelo fato da função pegar o primeiro número e fazer a comparação, da mesma forma que se faz para saber se uma palavra vem primeiro que a outra em ordem alfabética. Exemplo:
Qual palavra viria primeiro em ordem alfabética ascendente: Abstrato ou Aberto? Vejamos: A primeira letra das duas palavras são iguais, então vamos para a próxima. As segundas também são iguais, vamos à próxima. Na terceira letra temos caracteres diferentes. Entre s e e, a segunda vem primeiro, certo? Logo, a palavra Aberto vem antes da palavra Abstrato.
Aplicando isso na classificação:
Se voce tem as classificações 1, 2 e 10 qual vem primeiro? Seguindo a mesma lógica acima a ordem ficaria 1, 10 e 2, pois o 1 (do número um) e 1 (do número 10) vem antes do 2.
Toda comparação textual vai funcionar dessa maneira. Como resolver? Aplique o 0 antes dos algarismos unitários, ou seja, ao invés de classificar o cara como 1, classifique-o como 01. Neste caso dará certo. Mas lembre-se de retirar os espaços do campo.
Quanto ao comportamento da tabela Results que funciona corretamente é pelo fato de APENAS nos algarismos unicos (de 1 a 9) voce colocou o espaço antes. O caractere "espeço" é ordenado ants de número e letras pelo VBA, por isso funciona certo. Você também pode fazer isso para classificar, ao invés de usar o 0.
Espero que tenha entendido.
Abraço.