Você está na página 1de 6

Manipulando datas e horas no Excel por Robert Martim

629 32 0Email5
Object 1

Object 2

Este artigo tem o objetivo de mostrar ao leitor um pouco sobre a manipulao de datas e horas no Excel. O artigo retirado do MDULO 3 DE TREINAMENTO NO EXCEL - FRMULAS NO EXCEL: MANIPULANDO DATAS E HORAS o qual pode ser adquirido, por apenas R$10, no seguinte endereo http://shop.linhadecodigo.com.br/treinamento.asp?id=307 (VIA DOWNLOAD) Ao adquirir este curso o leitor ainda ganha 30 pontos no programa TopDev da Microsoft para compras via download e 60 pontos para compras via CD. No perca esta oportunidade! Este artigo assume um conhecimento prvio de como datas e horas so manipuladas no Excel. Se voc ainda tem alguma dificuldade nesta rea este mdulo de treinamento certamente o que voc precisa para compreender esta rea ainda obscura do Excel. Alm de cobrir todos os tipos de manipulaes com datas e horas na planilha o leitor ainda aprender a usar o VBA para criar funes que no existem no Excel, mas so muito requisitas pelos mais variados nveis de usurios. Uma dvida que sempre surge nos usurios de Excel como subtrair, por exemplo, 176:00:00 de 150:00:00. Aqui temos uma situao interessante. Como explicado no Treinamento, no existe 176 horas ou 150 horas para o Excel. O que existe so 176/24 e 150/24 (7,33 dias e 6,25 dias respectivamente). Novamente, o que ocorre que podemos formatar 7,33 para mostrar 176:00:00 ou at mesmo digitar o valor 176 (o qual representaria 176 dias e no 176 horas). Para mostrar o nmero total de horas, basta utilizar o seguinte formato: [h]:mm:ss. Os colchetes instruem o Excel a mostrar o somatrio das horas ao invs da frao do primeiro dia fracionado. Ao tentar subtrair 176 horas de 150 horas o valor retornado negativo. No sistema de datas 1900 isso no vlido. Ao modificar para o sistema 1904 possvel subtrair uma hora maior de uma menor. Neste caso especfico ao efetuarmos a subtrao 150176 obtemos 26 horas. Se os valores se encontram neste formato a outra opo e "envelopar" a subtrao na funo ABS: =ABS(150:00:00176:00:00) Novamente, embora a formatao mostre claramente as 26 horas, este no o valor efetivamente utilizado pelo Excel para efetuar os clculos. Observe, contudo, que voc poderia ter simplesmente feito a seguinte conta: =176:00:00-150:00:00, para obter 26 horas sem a necessidade de complicar o problema. A funo ABS funciona bem neste exemplo porque no estamos preocupados com a direo das horas. Veja que ao declarar 176 horas estamos dizendo ao Excel que este valor equivale a 7,33 dias. Imagine uma pessoa que trabalha no turno da noite em um supermercado. Se esta pessoa inicia o trabalho s 21 horas e sai s 5 horas da manh do dia seguinte, a direo da contagem das horas comea a fazer uma diferena. Como queremos saber o nmero de horas trabalhadas entre o horrio de entrada e sada, efetuaramos o seguinte clculo: =05:00:00-21:00:00 Ao efetuar este clculo obtemos um erro, pois o resultado negativo e o sistema 1900 no suporta valores negativos. Ao utilizarmos a funo ABS para envelopar a diferena, obtemos um resultado; porm, incorreto. Veja que ao passar o resultado para valor absoluto, a diferena invertida (21-

5=16). Mas sabemos que das 9PM s 00:00AM existem 3 horas e das 00:00AM s 05:00AM existem 5 horas, totalizando 8horas trabalhadas. Ento, como resolver este problema? A figura abaixo mostra dois mtodos para resolver a questo:

Figura 1

No primeiro exemplo, estamos avaliando se a condio verdadeira ou falsa. Se for falsa ela retorna o valor na clula B1 e a subtrao B1-A1 feita sem problemas. Se for verdadeira, o Excel retorna B1+1 e a subtrao efetuada (B1+1)-A1, retornando o nmero correto de horas trabalhadas entre os dois perodos. Neste ltimo caso, estamos acrescentando 24 horas para que o resultado leve em conta a mudana de um dia para o outro. Pare um segundo para avaliar o que esta ocorrendo aqui... Parou? Pensou? Entendeu? Agora, imagine que esta pessoa iniciou o trabalho no dia 01/07/2004 s 21:00:00 e saiu do trabalho no dia 02/07/2004 s 5 da matina. Todos os cartes de ponto que j vi em Excel, o formato o seguinte:

Figura 2

A frmula funciona que uma maravilha, pois a pessoa entrou num dia e saiu no outro. Como poucas pessoas trabalham mais de 24 horas sem parar, o mtodo acima no apresenta problemas, mas se voc precisa avaliar o nmero de horas que uma mquina ficou em funcionamento, por exemplo, voc tem que ajustar a frmula para levar em conta o nmero de dias, pois a diferena ser negativa. Imagine, ento, que a mquina comeou a rodar s 21:00:00 do dia 01/07/04 e somente parou no dia 04/07/04 s 05:00:00. Utilizar a funo MOD no resolve, pois ela retorna o resultado dentro das primeiras 24 horas. A soluo adaptar o exemplo utilizando a funo SE, como segue: =SE(C3<B2;C3+3;C3)-B2 Como a mquina rodou o dia todo nos dias 2 e 3/07/04 mais as trs horas do primeiro dia e mais cinco horas do quarto dia, temos um total de horas de: 3+24+24+5, isto , 56 horas rodando sem parar. O valor verdadeiro precisa ser adicionado a trs, pois 1 para as primeiras 24 horas e 2 para os dois dias rodados por completo.

Figura 3

Se voc realmente parou, pensou e entendeu, voc deve ter notado que esse monte de frmulas completamente loucura! Por qu? Simples, muito simples. Imagine se voc tivesse que adaptar sua frmula toda vez que houvesse este tipo de variao nas datas!? A menos que voc tenha uma excelente razo para separar a data das horas, coloque tudo junto! Veja o exemplo abaixo:

Como a data e as horas so entradas na mesma clula ao efetuar as diferenas desnecessrio aquele monte de frmulas espalhafatosas que vocs devem ver por muitos livros por a e at mesmo as frmulas mostradas anteriormente.
Figura 4

bem provvel que voc tenha gostado do mtodo apresentado, mas tenho certeza que voc dir que mesmo assim precisa da data separadamente. O Excel possui uma tremenda flexibilidade de formatao de datas e horas (que so discutidas no Mdulo de Treinamento). Pois bem, podemos utiliz-las para eliminar a data no exemplo acima e em outra clula utilizar os mesmos valores na formatao de datas:

Figura 5

Aqui, a clula A2 igual a clula B2 e a clula A3 igual a clula C2. As clulas B2 e C3 contm a data e horas dos dias em questo, porm ambas esto formatadas para mostrar apenas as horas. J a coluna A est formatada para mostrar apenas a data. No obstante, os valores efetivamente nas clulas continuam sendo 01/07/04 21:00:00 e 04/07/2004 05:00:00 em todas as quatro clulas. Uma maneira simples, limpa, elegante e eficaz de resolver o problema. A prxima pergunta bvia sobre este mtodo ter que digitar 01/07/2004 21:00:00 na clula em questo, mas se estamos interessados em saber a data e hora neste exato momento podemos utilizar o VBA junto com a funo Agora (que em VBA a funo Now) para fazer isso e no perdemos tempo com longas digitaes de datas. Ou ainda utilizar atalhos de teclado para isso. A parte de VBA discutida em detalhes no Mdulo de Treinamento. Se subtrair um pouco complicado, somar bem mais descomplicado. Como o Excel automaticamente formata as horas para hh:mm:ss, quem j tentou somar horas descobriu que o somatrio aparece errado. Na verdade, ele no est errado. O formato est correto, mas a formatao que possibilita tal visualizao que est incorreta. Como explicado anteriormente, para mostrar horas acima de 24 horas com a visualizao que esperamos basta colocar a parte referente s horas (h) entre colchetes. O exemplo da subtrao de horas faz exatamente isso, caso contrrio, o valor visual da clula seria diferente. Dito isso, o somatrio de horas passa a ser uma tarefa bem fcil, como mostra a figura abaixo:

Figura 6

Todas as horas vistas nesta parte referem-se as horas inteiras. Se voc utilizar a funo de planilha Agora o Excel colocar a data, hora, minutos e segundos na clula selecionada. Contudo, talvez no seja bem isso que voc queira fazer. Se voc coleta informaes sobre carros que entram e saem da garagem de seu edifcio, provvel que tal preciso seja necessria. Mas, e se estamos avaliando um carto de ponto? Neste caso, presumvel que voc queira trabalhar com horas inteiras ou no mximo fraes de horas, como a cada 15 ou 30 minutos. Vamos supor que a mquina do exemplo anterior iniciou o funcionamento de acordo com a figura abaixo:

Figura 7

Em apenas um dia a mquina iniciou no minuto cravado. Todos os outros dias ela inicia em uma frao de segundo qualquer. Neste exemplo, voc deseja arredondar para o minuto mais prximo. Com isso quero dizer que voc deixar o Excel decidir se o arredondamento para cima ou para baixo, tudo que fazemos dar ao Excel os parmetros para avaliao. Como todos ns sabemos, o dia tem 24 horas e em 24 horas temos 1.440 minutos (24horas*60minutos). Com esta informao fica fcil avaliar o problema. Se multiplicarmos os valores observados na coluna A pelo nmero de minutos em um dia, estamos efetivamente movendo a frao referente aos minutos para a esquerda do decimal. Se arredondarmos este valor para zero casas decimais, estamos arredondando os segundos para cima ou para baixo. O resultado precisa, ento, ser divido por 1.440 para retorn-lo para a base correta:

Figura 8

Feito o arredondamento para o minuto, para arredondar para os 15 ou 30 minutos fica fcil. Se observarmos 1.440 minutos em um dia o nmero de vezes que 15 minutos ocorre em um dia 1.440/15 ou 96 vezes em um dia. Da mesma forma, 30 minutos ocorre 1.440/30 vezes ao dia (48 vezes). Por analogia, podemos expandir o conceito para qualquer outro tipo de arredondamento, por exemplo, 5 minutos ou 10 minutos. A figura abaixo mostra o arredondamento da figura anterior para 15 e 30 minutos:

Figura 9

CONCLUSO Neste breve artigo mostro como manipular alguns aspectos de datas e horas no Excel. Se voc deseja aprender mais sobre a manipulao de datas e horas nas planilhas do Excel e no VBA clique no link http://shop.linhadecodigo.com.br/treinamento.asp?id=307 (apenas R$10 via download) para adquirir j o seu mdulo de treinamento. Alm dos exemplos acima, o leitor aprender o que se passa por trs dos clculos (ver que at mesmo o Ajuda do Excel passa informao incorreta sobre onde realmente as datas iniciam em ambos sistemas, 1900 e 1904). O leitor tambm aprender sobre manipulao de datas e horas no VBA, como resolver questo do ano bissexto, ltimo dia til do ms, primeiro dia do ms, data mveis e muito mais. Alm, claro, de acumular pontos no programa TopDev da Microsoft.

Robert Martim - Formado e Ps-Graduado em Finanas pela Universidade de Londres, Reino Unido. Diretor de TI da Faircourt Capital Limited (Reino Unido). Fornece suporte pro bono em TI entidade de caridade Nigeriana NIDOE (Nigerians in Diaspora Organisation Europe) desde 2001. Colaborador ativo do frum Excel Avanado do site www.juliobattisti.com.br, onde divide seu conhecimento e experincia com outros membros do espao. Autor do livro Excel e VBA na Modelagem Financeira: Uma abordagem prtica. 629 32 0Email5
Object 3

Object 4

Leia tambm
Data Bars para MS-AccessAccess Funcionalidades do Office usando Visual Studio for Office Parte 3C# Funcionalidades do Office usando Visual Studio for Office - Parte 2C# Estenda as funcionalidades do Office com o Visual Studio for OfficeC# Como evitar processos pendurados na automao do Excel

Você também pode gostar