Pergunte aqui
1

Converter numero de dias em "AA anos, MM meses e DD dias" (por extenso)

perguntadas 2020-11-24 22:52:56 +0100

imagem do gravatar de Jedison

updated 2020-11-24 23:12:08 +0100

Sem a necessidade de recorrer ao BASIC, o CALC permite criar EXPRESSÕES que podem ser usadas como se usa as FUNÇÕES. A vantagem desse método é que as funções criadas no BASIC precisam de uma chamada para serem atualizadas, o que é sempre inconveniente em uma planilha de trabalho, enquanto que usando as expressões nomeadas a atualização é automática. Vamos dar um exemplo e aproveitar para criar uma função que transforme um determinado número de dias em um texto por extenso no formato "AA anos, MM meses e DD dias". Digamos que a célula A10 tenha esse determinado número de dias que se quer converter. Precisaremos de mais três Células livres à direita para criar a função (Até pode ser feita usando apenas uma célula - a que conterá o texto por extenso - , mas daí ficaria desnecessariamente complexa a fórmula).

  1. Posicione o Apontador em B10, vá em PLANILHA/INTERVALOS NOMEADOS E EXPRESSÕES/DEFINIR Em nome, digite TIRAMES e em INTERVALO OU EXPRESSÃO coloque INT(MOD(A10;360)/30). E clique em ADICIONAR.
  2. Posicione o Apontador em C10, vá em PLANILHA/INTERVALOS NOMEADOS E EXPRESSÕES/DEFINIR Em nome, digite TIRADIA e em INTERVALO OU EXPRESSÃO coloque INT(MOD(A10;30)). Clique em ADICIONAR.
  3. Posicione o Apontador em D10, vá em PLANILHA/INTERVALOS NOMEADOS E EXPRESSÕES/DEFINIR Em nome, digite TEMPOEXT e em INTERVALO OU EXPRESSÃO coloque: SE(A10<360;""; INT(A10/360) & SE(A10<720;" ano";" anos") & ESCOLHER((B10>0)+(C10>0)+1; "" ; " e ";", ")) & SE(B10=0;""; B10 & SE(B10=1;" mês";" meses") & SE(C10=0;"";" e ") ) & SE(C10=0;""; C10 & SE(C10=1;" dia";" dias") ) Clique em ADICIONAR.

Pronto. As funções estão criadas. Agora, para obter o resultado esperado, use as três células à direita daquela que conterá o número total de dias a converter e digite nelas, respectivamente =TIRAMES =TIRADIAS =TEMPOEXT

Assim, se o número total de dias em A10 for 876, a célula D10 mostrará o texto "2 anos, 5 meses e 6 dias". Pontuação, omissões e plurais serão adaptados automaticamente: 388 mostrará "1 ano e 28 dias" (Acho que nem precisa explicar como fazer para considerar anos de 365 dias)

Se não quiser que as células de TIRAMES e TIRADIAS apareçam, basta posicioná-las em uma coluna oculta da sua planilha, adaptando as fórmulas.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2020-11-25 01:46:19 +0100

imagem do gravatar de Schiavinatto

updated 2020-11-25 01:56:29 +0100

Ola @Jedison, uso uma maneira mais fácil....

Por exemplo em

  • A1 = Data Nascimento;
  • A2 = Data atual;
  • A3 =DATADIF(A1;A2;"y")&" anos,"&DATADIF(A1;A2;"ym")&" meses, "&DATADIF(A1;A2;"md")&" dias."

Descrição da imagem

editar assinalar como ofensivo Excluir Link mais

Comentários

Oi Gilberto. Bom "vê-lo" aqui, onipresente amigo. A sua formulação é boa, e tem a virtude de ser imensamente menos complexa. Mas ela tem algumas limitações. Vou citar as que eu considero mais importantes: A principal é que ela fornecerá textos como: "2 anos, 1 meses, 0 dias" "1 anos, 0 meses e 15 dias" "1 anos, 0 meses e 0 dias" A que proponho, nesses casos fornecerá, respectivamente: "2 anos e 1 mês" "1 ano e 15 dias" "1 ano" A segunda limitação, também muito importante, é que nem sempre o número de dias a ser expresso em AA anos, MM meses e DD dias decorre de uma "diferença de datas". Eu a utilizo, por exemplo, para concatenar uma soma de dias. Num caso são, por exemplo, 90 dias, noutro 120, noutro 14. A soma deles será 224 dias, e preciso obter como resultado o texto "7 meses e ...(mais)

imagem do gravatar de JedisonJedison ( 2020-11-25 13:21:25 +0100 )editar

Ou seja, no seu método a diferença de dias entre 03/05/2010 e 08/06/2012 seria de "02 anos, 01 meses e 05 dias". Esse cálculo serve para alguns propósitos mas deixa outros de fora. Muitos cálculos determinados pela legislação estabelecem que um determinado número de dias seja convertido em anos, meses e dias levando em conta anos de 360 dias (chamado ano legal) e meses de 30 dias (chamado mês legal). No meu método isso pode ser facilmente redimencionado, como expliquei, se eu quiser, por exemplo, sejam considerados anos de 365 dias. E, se no meu método, eu precisar que o cálculo seja feito "subtraíndo os valores de anos, meses e dias" como acontece no seu, basta eu determinar, na célula onde constará o número de dias, o seu cálculo.

imagem do gravatar de JedisonJedison ( 2020-11-25 13:28:39 +0100 )editar

Claro que no seu método, todas essas limitações poderiam ser "facilmente" contornadas. Porém, aí você verá que a simplicidade da solução acaba, e no fim ficará bem mais complexa que a minha. Veja, não estou dizendo que a sua solução está errada. Pelo contrário, como eu disse no início ela tem a GRANDE VIRTUDE de ser mais simples, e dependendo da exigência de um resultado mais, ou menos, refinado, deverá servir com bastante eficácia. Só estou dizendo que o meu método permite uma melhor AUTOMAÇÃO de textos (por isso coloquei aquela TAG). Ah, e, claro, um dos objetivos da postagem foi TAMBÉM, mostrar como se cria uma FUNÇÃO no CALC, de forma fácil e sem a necessidade de recorrer a programação de MACROS (o mesmo que já debatemos naquela outra postagem). Muito grato pela sua contribuição. Meu objetivo aqui é apenas aparelhar nossos colegas usuários do CALC com soluções para ...(mais)

imagem do gravatar de JedisonJedison ( 2020-11-25 13:38:41 +0100 )editar

@Jedison, vamos dizer que cada caso é um caso, e o importante a dar escolhas para o usuário final usar o que mais lhe convêm.

E também existe a função pronta: https://wiki.documentfoundation.org/i...

e a extensão: https://extensions.libreoffice.org/en...

imagem do gravatar de SchiavinattoSchiavinatto ( 2020-11-25 13:50:20 +0100 )editar

Claro! Cada caso é um caso. Quanto à função pronta, essa aí de redigir (Valor, e não data, como aqui tratamos) por extenso fiz em duas versões. Uma direto no CALC e outra por MACRO, cada uma com as suas vantagens. Só que a minha em CALC não usa tantas células assim... Mesmo assim, obrigado pelas dicas.

imagem do gravatar de JedisonJedison ( 2020-11-25 14:24:17 +0100 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2020-11-24 22:52:56 +0100

Lidas: 19 vezes

Última atualização: Nov 25 '20