Ir ao conteúdo
  • Cadastre-se

Excel criar numero sequencial em excel


Ir à solução Resolvido por Patropi,

Posts recomendados

Prezados, gostaria de ter uma celula em um cadastro de projetos, que me mostrasse um codigo automatico e sequencial da seguinte forma:

Tenho a tela de cadastro e tenho a planilha que salva o banco de dados.

Cada projeto recebe um codigo, de acordo com o seguinte criterio:

ANO.MES.Numero sequencial  dentro do mes.

Exemplo,

2020.10.01  ano vigente, mes vigente, e numero 01, 2,3 , sequencial para os projetos que surgem.

2020.10.02

2020.10.03

2020.11.01 trocou o mes, recomeça a conta.

2020.11.02

2020.12.01

2021.01.01

 

Gostaria de ter um campo, no cadastro do projeto, onde coloco dados normais como data de pedido, data entrega, cliente e demais informaçoes, que fosse automatizado , ja me retornando o codigo , ao salvar os dados na tabela, ele ja me retorna o seguinte., e assim por diante.

 

Alguem saberia me dizer como proceder ?

 

Agradeço antecipadamente.

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Bom dia, @Gusthavo Marini

 

Seja bem-vindo ao fórum!

 

Sem anexar um arquivo Excel, dificilmente algum colaborador irá ajudar, pois depende de conhecermos a estrutura da planilha.

Para anexar arquivos com macro tem que Zipar.

 

Se foi útil, clique em Curtir.

 

[]s

Link para o comentário
Compartilhar em outros sites

13 horas atrás, Gusthavo Marini disse:

Prezados, gostaria de ter uma celula em um cadastro de projetos, que me mostrasse um codigo automatico e sequencial da seguinte forma:

Tenho a tela de cadastro e tenho a planilha que salva o banco de dados.

Cada projeto recebe um codigo, de acordo com o seguinte criterio:

ANO.MES.Numero sequencial  dentro do mes.

Exemplo,

2020.10.01  ano vigente, mes vigente, e numero 01, 2,3 , sequencial para os projetos que surgem.

2020.10.02

2020.10.03

2020.11.01 trocou o mes, recomeça a conta.

2020.11.02

2020.12.01

2021.01.01

 

Gostaria de ter um campo, no cadastro do projeto, onde coloco dados normais como data de pedido, data entrega, cliente e demais informaçoes, que fosse automatizado , ja me retornando o codigo , ao salvar os dados na tabela, ele ja me retorna o seguinte., e assim por diante.

 

Alguem saberia me dizer como proceder ?

 

Agradeço antecipadamente.

 

 

Prezados,

 

Eu consegui parcialmente a solução, mas preciso ainda de um auxilio. 

 

Utilizei a seguinte Sintaxe:

 

=CONCATENAR(ANO(HOJE());".";MÊS(HOJE());".";CONT.VALORES(BaseDados!B4:B1048576)+1)

 

A Base de Dados tem a seguinte Tabela:

 

Numero projeto   - NOME  - RESPONSAVEL E assi por diante

2020.11.01

2020.11.02

2020.11.03

2020.12.01

2020.12.02

 

Utilizando essa sintaxe, ele vai contando, montando os codigos , porém, ele conta os numeros todos, portanto o proximo numero , pela sintaxe, seria, 2021.1.6

 

Eu preciso que ele " REsete" a contagem sempre que o mes se alterar. O correto seria 2021.1.1

 

Eu pensei em usar CORRESP e DESLOC pra buscar o MES ATUAL mas nao sei como configurar isso. 

 

E Gostaria tb que o codigo ficasse com o numero ) antes do mes e o ultimo algarismo quando ele tiver apenas 1 digito, que ele colocasse 2 digitos. 

 

Alguma ideia para essa sintaxe??

 

GRato.

Cadastro Projetos_TESTE.zip

Link para o comentário
Compartilhar em outros sites

@Patropi consegui gerar de uma forma mas ainda não satisfez minha necessidade. Já postei o arquivo zipado com a planilha. É coisa bem simples. Estou em processo de aprendizado e as vezes agente esbarra em algo que não acha solução na internet sem auxílio de gente com mais conhecimento. 
 

na realidade eu já usei uma planilha dessas em um emprego antigo onde gerávamos número de proposta exatamente com essa estrutura de ANO(4digitos).MES(dois dígitos).número sequencial que reseta ao virar o mês. 
 

grato

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

Boa noite, @Gusthavo Marini

 

Veja se ajuda:

 

Em M5 da Planilha1:

=ANO(HOJE())&"."&TEXTO(MÊS(HOJE());"00")&"."&TEXTO(CONT.SE(BaseDados!B:B;ANO(HOJE())&"."&TEXTO(MÊS(HOJE());"00")&"*")+1;"00")

 

No lugar do código atual do botão SALVAR segue abaixo um código mais limpo e mais rápido:

Sub ReplicaDados()
 Dim LR As Long
 With Sheets("BaseDados")
  LR = IIf(.[B4] = "", 4, .[B3].End(4).Row + 1)
  .Cells(LR, 2) = [M5]
  .Cells(LR, 3).Resize(, 9) = Application.Transpose([C5:C13])
 End With
 'LimpaPlanilha1
End Sub


No lugar do código atual do botão LIMPAR:

Sub LimpaPlanilha1()
 Sheets("Planilha1").[C5:C13] = ""
End Sub

 

obs. se quiser limpar a Planilha1 automaticamente ao replicar os dados, então, basta remover o apóstrofo da linha verde

 

Segue a planilha anexada para você testar.

 

Se foi útil, clique em Curtir.

 

Se a resposta solucionou a dúvida, marque como Solução

 

[]s

02_01_21_Cadastro Projetos_TESTE_Patropi.zip

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Patropi Prezado Patropi,

 

Grato pelo auxilio e tempo disponivel. 

 

Veriiquei e solucionamos em partes. Seu codigo esta mais limpo realmente. Nada melhor do que alguem que sabe. Eu ate havia descoberto a poucos min a função TEXTO e estava tentndo utilizada, e entendi o seu racicionio. Bem mais direto que o que eu estava tentando. Parabens e obrigado.

 

Bom, vamos la:

 

1- campo com 2 digitos resolvido. 2020.03.01. OK

 

2- Na sua planilha , a Macro de LIMPAR esta limpando o campo em cinza C11, que na minha , ele é calculado automaticamente , nao deve ser limpo (ele fica bloqueado) O calculo é feito com o campo C10 + o H11. A celula que deve ser limpa é a H11 e a C11 nao deve ser mexida pois é uma formula. Eu ainda nao comecei a estudar VBA, mas seria isso a alteração necessaria? 

 

Sheets("Planilha1").[C5:C10] + [C12:C13] + H11 = ""

 

3- Pelo que testei esta funcionando o reset a cada mes. começando do 01 novamente. Eu so nao consegui entender a sintaxe, me perdoe, mas se puder fazer um breve descritivo, do final, de como você procede o racicionio pra eu aprender e entender, pois gosto de entender as coisas e nao somente usar o CTRL + C ; CTRL +V .... 

 

 

Mais uma vez muito obrigado pela ajuda.

 

att

 

Link para o comentário
Compartilhar em outros sites

Feliz 2021, colegas e amigos!

 

@Gusthavo Marini, grosso modo segui a mesma linha de raciocínio do amigo @Patropi, portanto não difere muito (o crédito da solução continua sendo dele). Apenas fiz uso de sintaxe estruturada de tabela na fórmula da M5 e no VBA, aproveitando o fato que sua base de dados está em uma Tabela (ListObject).

 

Fórmula da M5 (Planilha1):

=TEXTO(HOJE();"AAAA.MM.")& TEXTO(CONT.SE(Tabela1[NUMERO DO PROJETO];TEXTO(HOJE();"AAAA.MM.\*"))+1;"00")

 

VBA:

Sub CopiaSalva()
  With Worksheets("BaseDados").ListObjects("Tabela1").ListRows.Add(AlwaysInsert:=True)
    .Range.Cells(1).Value = Worksheets("Planilha1").[M5]
    .Range.Cells(2).Resize(, 9).Value = Application.Transpose(Worksheets("Planilha1").[C5:C13])
  End With
End Sub

Sub Limpar()
  Range("C5:C10,C12:C13,H11").ClearContents
End Sub

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Patropi @Edson Luiz Branco obrigado meu amigo

 

um ótimo ano a todos. Por tentativa e erro eu consegui modificar a sub limpar, e consegui fazer funcionar. Sou usuário nível básico. Estou tentando aprender ainda. Mas acabou dando certo. 
 

obrigado pelo seu auxílio também. Vi que foi formatado de forma diferente. Mas entendi tb o raciocínio. 
 

meu só não entendi ainda qual o raciocínio do final da sintaxe que “reseta” a contagem com a mudança do mês. 
 

 

=TEXTO(HOJE();"AAAA.MM.")

entendi que pega o texto do ano e mês com 4 e 2 dígitos. Concatena com ...

TEXTO(CONT.SE(Tabela1[NUMERO DO PROJETO];TEXTO(HOJE();"AAAA.MM.\*"))+1;"00")

Conta se na tabela tem o texto com data de hoje no formato informado 4 dígitos e 2 dígitos , se tiver soma 1 e se não tiver começa no 00 ? Seria isso? E se for , teria que começar no 01 novamente não? 
 

 

a sintaxe do @patropi ficou 

 

=ANO(HOJE())&"."&TEXTO(MÊS(HOJE());"00")&"."&

ano de hoje concatenado com o mês de hoje com 2 dígitos 

 

TEXTO(CONT.SE(BaseDados!B:B;ANO(HOJE())&"."&TEXTO(MÊS(HOJE());"00")

contando se tem o ano e mês de hoje na coluna base de dados 

 

&"*")+1;"00") e esse final que não entendi... o “*” +1 quer dizer o que ? 

 

Link para o comentário
Compartilhar em outros sites

8 horas atrás, Gusthavo Marini disse:

Conta se na tabela tem o texto com data de hoje..., se tiver soma 1 e se não tiver começa no 00 ? Seria isso?

Não exatamente. O "00" é argumento da função TEXTO e só serve pra formatar a saída numérica sempre com 2 dígitos.

A parte da fórmula que conta é:

 

CONT.SE(Tabela1[NUMERO DO PROJETO];TEXTO(HOJE();"AAAA.MM.\*"))+1

 

Veja que o argumento Critério da CONT.SE usa um asterisco. Foi usado porque a CONT.SE assim como algumas outras funções do Excel admitem o uso de coringas. Então esse trecho da fórmula diz: "na coluna NUMERO DO PROJETO  da Tabela1, conte quais valores começam com o dia de hoje formatado como "AAAA.MM." e terminem com qualquer coisa. Após contar, some 1. Então se a contagem der 0 (novo mês), somado com 1 dá o reinício.

A barra invertida antes do asterisco é usada como um caractere de escape para o asterisco, pois é caractere especial.

Basicamente as fórmulas minha e do Patropi são próximas. A diferença é no uso da coluna da tabela e o número de concatenações.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Edson Luiz Branco @Edson Luiz Branco

 

Caro colega, entendi o conceito. Seria como o antigo *.* do antigo DOS  , pra quem é dessa epoca. kkkkk.....

 

Agora, entao, aproveitando a oportunidade pra eu aprender um pouco , ja adianto uma necessidade que vou ter, e que poderei usr essa foração do *.*.

 

Eu terei uma lista do tipo:

2020-11-01-US149

2020-11-01-US060

2020-11-01-US141

2020-11-01-US508

2020-11-01-US527

2020-11-01-US027

2020-11-01-US146

2020-09-02-US541

2020-09-02-US540

2020-09-02-US543

2020-09-02-US520

 

Essa lista é formada a partir do codigo criado anteriormente e mais outros dados queu vão para outros processos... Enfim, eu teria que "filtrar" os itens de cada codigo. Mas nao posso usa o filtro comum porque cada um tem um codigo fianal. A raiz seria o ano-mes-00 (e os dois digitos) pra eu filtrar de cada peojeto é  cada codigo US. 

 

Entao eu pnesei em um =SE a celula que contem o codigo todo tiver , por exemplo 2020-09-02; ela copia o codigo , ou escreve sim, se nao, ela escreve nao, ou deixa em branco, por exemplo.

 

Como eu usaria o \* nessa sintaxe???

 

=SE(Celula)="2020-09-02*" ; "SIM"; "NAO"  ?????   (Eu preferia repetir o codigo completo na celula, mas assim ja me atenderia pra dar sequencia.....

 

Grato pela atenção desde ja.

 

Att.

 

 

image.png

Link para o comentário
Compartilhar em outros sites

@Patropi

Amigo, gostaria de mais uma vez uma ajuda sua, se possivel for. 

 

Eu fiz um grafico gannt usando modelo do excel em Outro arquivo. quando finalizei, eu copei ele e a planilha Dados Auxiliares, para o arquivo princpipal. 

Eu abri o Gerenciador de nomes, que dava erro, CTRL F3 e ai acho que foi meu erro, e APAGUEI muitos nomes que estavam duplicados e triplicados. 

Creio que foi deposito disso, que a contagem do numero inicial do projeto, que foi você quem deu a dica, e que é a base inicial do todo o processo, parou de funcionar.  As macros de SALVAR e Limpar tb pararam...

 

Poderia me auxiliar, pois este jovem jumento que vos escreve nao salvou o arquivo antigo funcional, salvei por cima a besteira que fiz... 

 

Sei que revisar deve ser difícil, mas se puder ajudar, sera de grande valia e aprendizado pra mim...

 

GRato.

 

Cadastro Projetos_Final.zip

Link para o comentário
Compartilhar em outros sites

@Edson Luiz Branco @Patropi

Amigo, gostaria de mais uma vez uma ajuda sua, se possivel for. 

 

Eu fiz um grafico gannt usando modelo do excel em Outro arquivo. quando finalizei, eu copei ele e a planilha Dados Auxiliares, para o arquivo princpipal. 

Eu abri o Gerenciador de nomes, que dava erro, CTRL F3 e ai acho que foi meu erro, e APAGUEI muitos nomes que estavam duplicados e triplicados. 

Creio que foi deposito disso, que a contagem do numero inicial do projeto, que foi você quem deu a dica, e que é a base inicial do todo o processo, parou de funcionar.  As macros de SALVAR e Limpar tb pararam...

 

Poderia me auxiliar, pois este jovem jumento que vos escreve nao salvou o arquivo antigo funcional, salvei por cima a besteira que fiz... 

 

Sei que revisar deve ser difícil, mas se puder ajudar, sera de grande valia e aprendizado pra mim...

 

GRato.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Bom dia @Gusthavo Marini

 

Está retornando erro de compilação porque você na primeira Macro ao chamar a Macro de limpeza, digitou o nome errado.

Para solucionar isso basta você trocar o nome de LimpaCadastro Projeto para LimpaPlanilha1, que é o nome da segunda macro que você está mandando executar com esse comando.

 

[]s

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...