Criar código numérico que aumenta automaticamente

Como pintar uma célula, como formatar uma borda, funções básicas! Se você não sabe em que categoria postar a sua dúvida, escreva aqui que depois nós mudamos o tópico.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Criar código numérico que aumenta automaticamente

Mensagempor EJota » Qua Ago 14, 2019 12:04 pm

Bom dia!

Estou em processo de atualizar algumas planilhas onde eu trabalho, e uma das atualizações está me dando uma boa dor de cabeça.
Não usamos Help Desk para controlar nossos chamados de assistência técnica, e sim uma planilha de Excel que serve com painel de controle e banco de dados para chamados antigos (problema -> solução).
A numeração dos chamados é feita da seguinte forma:
CAT/ANO/MES/NUMERO, sendo o número de 1 até o final do ano.

Pensando em melhorias nessa planilha, eu tive a idéia de fazer a numeração zerar ao final de cada mês ao invés do ano, e automatizar a criação desses "CAT" ao invés de digitar manualmente. Dessa forma, eu consigo gerar um relatório de quantos chamados apareceram por mês usando somente o número dos chamados, e a numeração automática é para facilitar 0,01% da minha vida mesmo.

Mas a numeração automática está me dando dor de cabeça.

Eu consegui fazer até esse ponto:

Código: Selecionar todos
(1) ="CAT"
(2) &ANO(B3)
(3) &SE(MÊS(B3)<=9;CONCAT(0;MÊS(B3));MÊS(B3))
(4) &SE(MÊS(B2)<MÊS(B3);1;DIREITA(C2)+1)


(1) sendo o texto por escrito em formato de string
(2) ele usa as datas da coluna B para separar o ano
(3) Aqui foi um exercício para padronizar a informação: usando a coluna B para ver o mês, se o mês não for 10, 11, 12, é para ele adicionar "0" na frente, para ter o mesmo número de dígitos
(4) Aqui está sendo meu maior problema. A idéia é: Se a fórmula detectar que o chamado atual (linha 3) for feito no mês seguinte ao chamado anterior (linha 2), é para ele pegar o último número no final do chamado e adicionar +1, para criar uma numeração crescente. O problema está quando ele chega no 10, sendo o número final 0, ocasionando que ele volte o contador para 1, ao invés de 11.
Pensei em fazer um jogo lógico: Se o número for 0, ler o número anterior além do 0 e adicionar mais um, para dar continuidade.

A fórmula na parte (4) ficou assim:
Código: Selecionar todos
SE(MÊS(B2)<MÊS(B3);1;SE(DIREITA(C2)=0;DIREITA(C2;2)+1);+1)

Mas o Excel não está deixando. Ele diz que há argumentos demais no código e não me explica porquê.

Alguém poderia me ajudar a aprimorar o código?

Obrigado!
EJota
Membro
Membro
 
Mensagens: 3
Registrado em: Qua Nov 07, 2018 7:50 am
Has thanked: 0 time
Have thanks: 0 time

{ SO_SELECT }

Re: Criar código numérico que aumenta automaticamente

Mensagempor rlm » Qua Ago 14, 2019 2:11 pm

"...em fazer um jogo lógico: Se o número for 0..."
Uma possibilidade; Experimente:
Código: Selecionar todos
="CAT"&ANO(B3)&TEXTO(MÊS(B3);"00")&SE(MÊS(B3)<MÊS(B2);1;SE(MÊS(B2)<MÊS(B3);1;EXT.TEXTO(C2;PROCURAR(TEXTO(MÊS(B3);"00");C2;1)+2;2)+1))
Reinaldo - RLM - Rmarco
Gostou da resposta? Clique no ícone "Positivo" da mensagem!(ao lado de citar)
Avatar do usuário
rlm
Ninja do Excel
Ninja do Excel
 
Mensagens: 284
Registrado em: Qui Out 16, 2014 12:30 pm
Has thanked: 18 times
Have thanks: 133 times

Re: Criar código numérico que aumenta automaticamente

Mensagempor EJota » Qua Ago 14, 2019 5:00 pm

Obrigado pela resposta, rlm!

Obrigado pela simplificação no mês para
Código: Selecionar todos
TEXTO(MÊS(B3);"00"
.

Fiz o teste numa planilha com 197 datas em ordem crescente e vi algumas coisas:
(1) - Deu certo! Muito obrigado! Poderia me explicar de uma forma leiga mais ou menos o que fez?

(2) - Usei essa sua simplificação para que os numerais crescentes 1, 2, 3 até 9 ficassem 01, 02, 03 até 09, mas estranhamente o primeiro lançamento fica 01, todos os outros 01 subsequentes voltam a ficar 1, enquanto os outros numerais se tornaram com "0" na frente normalmente.
Na depuração o "1" aparece como sendo resultado dessa sequência lógica:
Código: Selecionar todos
SE(MÊS(B3)<MÊS(B2);1;[u]SE(MÊS(B2)<MÊS(B3);1[/u];EXT.TEXTO(C2;PROCURAR(TEXTO(MÊS(B3);"00");C2;1)+2;2)+1))
quando ele aceita o valor como verdadeiro e a próxima avaliação da fórmula dá 1. Ainda preciso testar mudar o formato desse resultado lógico para o valor em texto para ver se ele me dá um valor mais consistente.

(3) - Um bug muito estranho ocorreu: Em todos os lançamentos do mês de janeiro (01), a fórmula dá o resultado como "91", fazendo com que todos os campos se tornem CAT20190191 durante o mês todo.
Na depuração, o resultado de "PROCURAR retorna
Código: Selecionar todos
("01"; CAT20190100;1)
. Na próxima avaliação ele dá 5+2, logo em seguida,
Código: Selecionar todos
EXT.TEXTO("CAT20190100";7;2)
resultando em "90"+1.

CAT20190100 é o valor da célula logo acima da primeira e logo abaixo do cabeçalho da tabela, usada para manter os valores das células seguintes válidos.


(4) - Toda essa criação me fez pensar:
Será que vale a pena ter o número reiniciando a cada mês? A ideia é que ficasse mais fácil para retornar o número de chamados por mês se eu fizesse um gráfico ou alguma tabela dinâmica, mas provavelmente a forma mais fácil seria usar as células com as datas e calcular a quantidade de células que existem em um determinado mês.
Dessa forma como está fica mais interessante o tamanho do código CAT, já que supostamente ele nunca ultrapassaria o tamanho de 11 dígitos, mas isso é irrelevante para mim, sendo a simplicidade melhor.

De novo, muito obrigado por ter me ajudado!
EJota
Membro
Membro
 
Mensagens: 3
Registrado em: Qua Nov 07, 2018 7:50 am
Has thanked: 0 time
Have thanks: 0 time

Re: Criar código numérico que aumenta automaticamente

Mensagempor rlm » Qua Ago 14, 2019 9:52 pm

Quanto ao bug reportado no item (3) o "erro" ocorre pois não levei em conta os meses iniciais assim, no mês de janeiro, ao mandar procurar no texto "CAT20190101 o mês "01", e como o ano 2019 contem essa referencia ocorre o retorno incorreto.
Experimente:
Código: Selecionar todos
="CAT"&ANO(B3)&TEXTO(MÊS(B3);"00")&SE(MÊS(B3)<>MÊS(B2);1;EXT.TEXTO(C2;10;2)+1)

Item (2) - Não entendi o reportado/ocorrido , pode dispor um modelo em exel,utilize um site de compartilhamento de arquivos tipo SendSpace/Google Drive/Dropbox..
e informe aqui no forum o link
item (4) Particularmente considero preferível utilizar a coluna data para contar as ocorrências de cada mês via formula ou mesmo Tabela Dinamica
Reinaldo - RLM - Rmarco
Gostou da resposta? Clique no ícone "Positivo" da mensagem!(ao lado de citar)
Avatar do usuário
rlm
Ninja do Excel
Ninja do Excel
 
Mensagens: 284
Registrado em: Qui Out 16, 2014 12:30 pm
Has thanked: 18 times
Have thanks: 133 times


Voltar para Excel - O básico

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes