lista de validação de dados do Excel apenas maiúscula

0

Eu quero fazer alguma validação de dados em minha pasta de trabalho do Excel. Eu quero usar tantos valores centralizados quanto possível para a validação de dados, pois os mesmos valores são usados para várias planilhas. Agora eu adicionei alguma validação para códigos de moeda (USD ...). a validação é baseada em uma lista em outra planilha e seu funcionamento é bom. Meu problema é que ainda posso inserir valores minúsculos e não apenas valores exatos. Eu preferiria uma solução que não use o VBA é possível. Se for possível somente com o VBA, adicione algumas informações sobre como adicioná-lo à pasta de trabalho e tal.

Os valores que desejo permitir são:

CHF
EUR
GBP
USD
DKK
SEK
NOK

e a validação de dados se parece com isto: =Sheet1!$S$2:$S$8 mas também permite os valores acima como minúsculas que não é o que eu quero (vejo que eu posso listar os valores dentro da validação de dados e só aceita correspondências exatas, mas para não ter muito trabalho se os valores mudarem, eu quero tê-los centralizados).

Acho que também seria bom converter os valores em maiúsculas, mas isso tem que acontecer na mesma célula, por exemplo. Eu digito eur na célula J6 , então ele deve converter o valor para maiúscula e escrevê-lo também em J6

    
por XtremeBaumer 15.09.2017 / 12:02

2 respostas

1

Eu encontrei uma solução com o VBA:
Clique com o botão direito do mouse na guia da sua planilha e escolha "Mostrar código ...". No VBA-Editor, digite estas macros:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:C100")) Is Nothing Then
         On Error GoTo ErrorHandler
         Application.EnableEvents = False
         Target.Value = UCase(Target)
    ErrorHandler:
        Application.EnableEvents = True
    End If
End Sub

Altere o intervalo correspondente às suas necessidades. Você precisa salvar seu arquivo como *.xlsm . Então todo texto no intervalo é convertido em maiúsculas.

    
por 15.09.2017 / 12:50
1

Se a célula que você deseja validar estiver na célula A1, defina o tipo de validação de dados como Personalizado em vez de Listar e cole esta fórmula em:

=AND(SUMPRODUCT(--((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>64)),--(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<91))=LEN(A1),--(IFERROR(IF(MATCH(A1,Sheet1!$S$2:$S$8,0),1),0)))

Passo a passo

Esta fórmula usa duas condições, combinadas com um AND() - em primeiro lugar, uma verificação de que o valor é todo em letra maiúscula, em segundo lugar, uma verificação de que o valor corresponde à sua lista de opções permitidas.

 =AND(
    SUMPRODUCT(
       --(
           (CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>64)
         )
       ,--(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<91)
     )=LEN(A1)
   ,--(IFERROR(IF(MATCH(A1,Sheet1!$S$2:$S$8,0),1),0)))

Os bits que parecem com CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>64 estão verificando o código ASCII para cada caractere individual. Se estiverem entre os códigos ASCII 64 e 91, sabemos que estão em maiúsculas. Se o número de caracteres maiúsculos corresponder ao comprimento da string de valor, sabemos que eles são todos maiúsculos.

A parte MATCH() verifica se o valor aparece na sua lista de moedas.

Observação: dê um grito para esta postagem para a verificação em maiúsculas.

    
por 15.09.2017 / 12:45