A primeira parte da sua pergunta pode ser realizada com validação de dados e um formato personalizado. Para fazer isso, primeiro selecione o intervalo inteiro a ser validado e clique no botão Validação de dados na faixa de opções Dados. Em seguida, para definir o formato personalizado, na guia Configurações da caixa de diálogo Validação de dados, altere a lista suspensa Permitir para "Personalizado" e cole ou digite a fórmula incluindo a porcentagem principal =
na caixa Fórmula:
=AND(A1 > 0, A1 < 1000000000, A1 = INT(A1), COUNTIF(A:A, A1) <= 1)
- A fórmula
AND
retornará verdadeiro se todos os argumentos forem verdadeiros. -
A1 > 0
valida que o número é positivo. -
A1 < 1000000000
valida que o número tem no máximo 9 caracteres. -
A1 = INT(A1)
valida que o número não é um decimal. -
COUNTIF(A:A, A1) <= 1
valida que o intervalo contém apenas 1 instância do número.
Não há necessidade de verificar se não há zeros à esquerda, a menos que o intervalo esteja formatado como texto, pois o Excel remove automaticamente os zeros à esquerda dos números.
Esta fórmula pressupõe que seu intervalo de destino seja a coluna A. Altere todas as instâncias de A1
na fórmula para a primeira célula no intervalo de destino e o $A:$A
para o intervalo inteiro. Certifique-se de usar o formulário de referência relativo ao se referir à primeira célula e ao formulário de referência absoluta ao se referir ao intervalo inteiro (por exemplo, B1
para a primeira célula e $B$1:$B$20
para toda a faixa).
Os benefícios de usar a validação de dados são que não há necessidade de usar macros e você pode especificar uma mensagem de entrada personalizada e uma mensagem de erro personalizada diretamente na caixa de diálogo Validação de dados.
A segunda parte da sua pergunta não pode ser facilmente realizada sem algum VBA. Se você estiver trabalhando com uma tabela e aplicando a validação de dados a uma coluna, isso pode ser feito facilmente usando uma coluna oculta e uma função personalizada semelhante à seguinte:
Function LimitAlpha24(str As String) As Boolean
Dim rx As Object
Set rx = CreateObject("VBScript.RegExp")
rx.Pattern = "^[A-Za-z-]{0,24}$"
LimitAlpha24 = rx.Test(str)
End Function