Como fazer ou qual formula usar?


#1

Olá !

Por favor como fazer a seguinte ação no Excel;

Tenho em B2 até K2, uma sequência de números assim; (B2:K2)

B2-----------------------------------K2
01-02-03-04-05-06-07-08-09-10

Como fazer com que em L2 até Z2 (L2:Z2), sejam inseridos automaticamente os números até completar 25? (Vou trabalhar com os números de 1 á 25) [ Em B2 até K2, será digitado qualquer número entre 1 até 25, mas apenas 10 deles, a partir de L2, devem constar todos os demais números não preenchidos até 0 25). ( Não é necessário que os números estejam ordenados, apenas que seja completado com os números faltantes, até o 25)

Assim;

B2-----------------------------------K2-L2----------------------------------------------------------Z2
01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25

Outro exemplo;

B2-----------------------------------K2-L2----------------------------------------------------------Z2
11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-01-02-03-04-05-06-07-08-09-10

Agradeço a atenção!

Att,
Pedro.


#2

Oi Pedro,

vejo duas formas de fazer esse tipo de funcionalidade. Vou listar aqui para ver se te ajuda:

1 - Usando a condicional SE aninhada (SE dentro de SE)

A lógica seria a seguinte. B2 ficaria em branco para você adicionar um número e na célula C2 você usaria a seguinte fórmula =SE(B2=25;1;SE(B2<25;B2+1;0). Depois bastaria arrastar para o lado até a coluna Z2

2 - Usando uma lista pronta

Para isso seria necessário criar uma lista automática no Excel - de 1 a 25. Depois de adicionar o primeiro valor, ao arrastar para o lado com a alça de preenchimento (funcionalidade habilitada ao levar o seu cursor para o canto direito inferior da célula), a lista se autocompletaria até 25 e recomeçaria ao ultrapassar o valor 25.

Vale a pena fazer um teste para ver o funcionamento exato dessa forma, mas acredito que funcionaria

Se quiser saber mais sobre como chegar nesses resultados, temos cursos de Excel. Vale a pena dar uma olhada neles:


#3

Fala, @Pedro. Tudo bem?

Criei uma Macro para realizar esta ação. Já testei aqui e funciona, mas você precisa alterar no código o nome da planilha (Planilha1) para o nome da sua planilha.

Sub auto_completa()

Dim B   As Integer
Dim C   As Integer
Dim D   As Integer
Dim E   As Integer
Dim F   As Integer
Dim G   As Integer
Dim H   As Integer
Dim I   As Integer
Dim J   As Integer
Dim K   As Integer
Dim W   As Worksheet
Dim L   As Integer

Set W = Planilha1

W.Range("L2:Z2").ClearContents

B = W.Range("B2").Value
C = W.Range("C2").Value
D = W.Range("D2").Value
E = W.Range("E2").Value
F = W.Range("F2").Value
G = W.Range("G2").Value
H = W.Range("H2").Value
I = W.Range("I2").Value
J = W.Range("J2").Value
K = W.Range("K2").Value

For L = 1 To 25

    If L <> B And L <> C And L <> D And L <> E And L <> F _
        And L <> G And L <> H And L <> I And L <> J And L <> K Then
    
        W.Range("B2").End(xlToRight).Offset(0, 1).Value = L
    
    End If

Next L

End Sub

Basta inserir um módulo, colar o código e atribuir o código à um botão. Lembre-se também de salvar o arquivo como Pasta de trabalho habilitada para macros do Excel.

Abraços


#4

Olá Rafael, boa tarde!

O Excel corrigiu a formula para;
=SE(B2=25;1;SE(B2<25;B2+1;0))

Acho que apenas fechou um parênteses!

A lógica seria;

No intervalo de (B2:K2), demonstrado abaixo;

B2-----------------------------------K2
01-02-03-04-05-06-07-08-09-10

Estaria vazio, assim;

B2-----------------------------------K2

Eu iria inserir as dezenas, assim;

01-02-03-04-05-06-07-08-09-10

Até o limite de 10 Dezenas, depois disso, ao lado o Excel preencheria automaticamente com as dezenas não preenchidas dentro do Intervalo de até 25, ou seja seriam 25 posições.

Ficando uma única linha completa com todas as 25 dezenas assim;

01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25

Aplicando sua sugestão no Excel e preenchendo as dezenas a partir de B2, assim;

B2-----------------------------------K2
01-02-03-04-05-06-07-08-09-10

A saída foi;

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Em resumo ele não preenche com as 15 dezenas faltantes, apenas incrementa mais um a dezena digitada em cima e caso não tenha mais dezena soma + 1.

Agradeço seu pronto atendimento e ajuda!

Sucesso!


#5

Olá Xavier, boa tarde!

Muito obrigado pelo seu apoio!

Fiz todo o procedimento descrito, inserindo um módulo e também criando o botão para executar, será que isso está certo?

Private Sub CommandButton1_Click()
auto_completa
End Sub

Se estiver não sei por qual motivo o botão não executou…

Ele não Habilita para o botão executar!

O código está em um módulo e o botão foi criado e associado ao código, tudo está na Plan1, e foi salvo como “Pasta de Trabalho Habilitada para Macro do Excel”.

O que acha que pode ser?

Att,


#6

Oi Pedro, quando você diz que não apareceu as dezenas faltantes você se refere a não ter o 0 antes do número?

Se for isso, normalmente o Excel entende 0 ao lado esquerdo do seu número como um número sem valor e por isso não apresenta. Se quiser ter, basta formatar o número que eles aparecerão normalmente.

Se for outra coisa que eu não entendi é só me dizer que eu tento ajudar.


#7

Fala @Pedro.

Você tem que copiar todo o código dentro do módulo. Vou colocar aqui novamente, você copia tudo e cola lá substituindo o que você já colocou, ok? Lembre-se também de alterar o nome da planilha.

Private Sub CommandButton1_Click()

Dim B As Integer
Dim C As Integer
Dim D As Integer
Dim E As Integer
Dim F As Integer
Dim G As Integer
Dim H As Integer
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim W As Worksheet
Dim L As Integer

Set W = Planilha1

W.Range(“L2:Z2”).ClearContents

B = W.Range(“B2”).Value
C = W.Range(“C2”).Value
D = W.Range(“D2”).Value
E = W.Range(“E2”).Value
F = W.Range(“F2”).Value
G = W.Range(“G2”).Value
H = W.Range(“H2”).Value
I = W.Range(“I2”).Value
J = W.Range(“J2”).Value
K = W.Range(“K2”).Value

For L = 1 To 25

If L <> B And L <> C And L <> D And L <> E And L <> F _
    And L <> G And L <> H And L <> I And L <> J And L <> K Then

    W.Range("B2").End(xlToRight).Offset(0, 1).Value = L

End If

Next L

End Sub

Abraços.


#8

Xavier,

Fiz o procedimento informado, alterei o nome de Plan1 para Planilha1, como solicitado, como saída gerou um erro em tempo de execução;

Observando no código parou nesse ponto;

Set W = Planilha1

Informa;

"Erro em tempo de execução ‘424’ "

O objeto é obrigatório .

Obrigado Mestre, até aqui!

Att,


#9

Fala Rafa,

Assim, eu teria que digitar 10 números em um local qualquer ok?

Perfeito, ao lado deve aparecer os 15 números restantes, então por exemplo se eu digito de 1 á 10, ao lado devem aparecerem as dezenas de 11 a 25, basicamente é isso!

Valeu Rafa!


#10

Fala, chefe. Tem diferença entre nome e rótulo. O que eu quis dizer é que você deve alterar o nome da planilha no código VBA. Se não é ‘Planilha1’, então deve ser ‘Plan1’. Altere no código.


#11

Fala @Pedro,

Se você vai digitar os 10 números, então é só usar a mesma fórmula que eu falei a partir da décima primeira coluna. Vou colocar um exemplo aqui:

Eu não sei se ficou claro, mas para escrever números começando com 0, você precisa utilizar um formato personalizado. Basta selecionar a célula, ir na parte de formatação de células, definir como personalizado e escrever 0#.


#12

Fala Rafa, bom dia!

Mudou um pouco somente a fórmula da anteriormente postada que era;

=SE(B2=25;1;SE(B2<25;B2+1;0)

Resolveu!

Perfeito!

Grato Rafa!

Att,


#13

Olá Xavier!

Refiz o procedimento, e pesquisando melhor acabei criando um botão desses simples com forma de quadrado, e atribuindo uma macro, colei lá o código, tomando cuidado para alterar para PLAN1, bom quando executo gera a mensagem “Não é possível executar a Marco”… Todas as macros estão habilitadas no meu micro, e o arquivo foi salvo permitindo macro!

Obrigado!

Att


#14

Fala, @Pedro.

Acho que vou ter que dar uma olhada no seu arquivo. Pode encaminhá-lo para o e-mail exlplanilhas@gmail.com? Assim eu dou uma olhada mais de perto.