петък, 20 август 2010 г.

#020 Как се изваждат часове

Тази тема е доста поучителна и рядко и се обръща внимание. Става дума за това как се вадят часове и се намира продължителност между два часа. Това е тема която изглежда толкова прозаична и ще се окаже, че има доста подводни камъни.

Ето примера.
Изваждане на часове
Типично "студентско" примeрче :) Въведени са данни в колонки A и B в клетка C2 е въведена формулата =B2-A2. Дръпната надолу и готовоооо:) Изглежда добре. Но има едни досадни проблемчета които рядко се отбелязват при обучението. 

Какво не му е на ред?! Ако обърнете внимание при въвеждането на формулата и се дръпне надолу клетките сами се оформят от тип Time (час). Тук Excel се прави на умен и крие ревниво своите тайни. Тайната е че данните от тип Time са си дробни числа като един часа е 1/24 два часа е  2/24 и т.н.  На кой му пука ще кажете вие. Но да проверим дали е така.

Да добавим още една колона и да се опитаме да покажем, че тези които са работили по-малко от 2 часа е зле а другите са добре.
Добавяме колона  D и в клетката D2 запишем следната функция: =IF(C2<2,"лошо","добре") (Преподавателя ни е научил на IF):) Да видим какво се получава.

Лошо, Лошо??
Хмм... Тук започваме да стопляме, че нещата не са както трябва. Защо при 18 часа е ЛОШО? Отговорът ви го дадох по-горе. В клетка C3 се намира стойността на "18 часЪТ" а не "18 часа"! Т.е. в колонка C имаме ЧАСОВЕ а не Продължителност!!! Тук ви трябва малко чист въздух и да продължите да четете:)

Оказва се, че не сме получили това което искаме. Какви са вариантите. Единия е да превърнем часа в продължителност. Да добавим още една колонка и в клетката E2 да въведем формулата =C2*24 с цел да преобразуваме час в число.

Нова колона
Ха... Стана още по-зле... ?!?! Какво става тук... Спокойно. Вродената интелигентност на Excеl по някога идва в повече. Проблемът е, че упорито настоява за оформяне от тип Time! Лесно можем да го вкараме в правия път оформяйки колонката като число (Comma style).

Оформяне като число

Всичко е Ок. Май:) Но трябва да внимавате в терминологията. Да огледаме все пак детайлно. За целта ще сравним съдържанието на клетките C2 (1:30) и E2 (1.50). Разделителя  в първия случай е ":" което означава, че се чете като "Един час и тридесет МИНУТИ". Във втория случай разделителя е десетична точка и се чете като "Един час и ПОЛОВИНА"! Което е едно и също, но казано с числа:) Мисля че е ясно, че 15:15 ще бъде представено като 15.25 (четвърт) и т.н.:)

Оказва се, че един интервал може да бъде представен по два начина. Като ЧАС или ПРОДЪЛЖИТЕЛНОСТ (число)! Кой е по-добрия не знам. Изговарят се по различен начин. От вас зависи. Но имайте предвид, че за да превърнете ЧАСА в число трябва да умножите по 24 (не по 100)!! И обратно трябва да разделите на 24 да преобразувате числото в час. Т.е. формулата в d2 може да се запише като:
=IF((C2*24)<2,"лошо","добре")  с корекция на час в число или като 
=IF(C2<(2/24),"лошо","добре") с корекция на число в час....

Ако още не ви боли глава да кажа как се вадят часове когато втория час е по-малък от началния. Например начало:23:00 край:14:00 . В този случай към разликата трябва да се добави единица. (което е 24 ЧАСА!).  Така се извършва корекцията на отрицателното число.

Ето формулата : =IF(B2<A2,B2-A2+1,B2-A2)   Тук Excel няма да усети че става дума за Часове и ще се наложи вие да форматирате клетката като час!

Hint: По-горната формула може да бъде изписана по-хитро без If...

=(B2-A2+(B2<A2)) тук трикът е в това че ако B2<A2 ще се върне истина (Което е 1) и ще се извърши корекцията иначе ще върне False (което е 0) и няма да има корекция... Хитро :)
Запомнете тази формулa:) Но не забравяйте че това връща ЧАС. За ЧИСЛО формулата е :

=(B2-A2+(B2<A2))*24

:) 



6 коментара:

  1. Здравей,

    Благодаря за ти пример свърши ми работа.Но имам един въпрос.Как да превърна число в часове и минути когато става въпрос за повече от един ден.Примерно за цяла седмица.Например имам 132,5 часа седмично и искам да ги представа като 132:30

    ОтговорИзтриване
  2. Вижте следващия трик... http://yuriy-excel.blogspot.com/2010/08/021-k.html
    делите на 24 клетката съдържаща числото за да го обърнете в часове и след това форматирате с [h]:mm

    ОтговорИзтриване
  3. Още веднъж благодаря ,получи се.

    ОтговорИзтриване
  4. Здравей,
    Имам проблем с превръщането но сума от минути в часове.
    Пример: от клетка А2 до А8 стойностите се въвеждат ежедневно като минути, успях да ги сумирам като минути в клетка А9, но искам освен да се сумират, автоматично да се превръщат в часове. Имаш трик и за моя случай :)

    ОтговорИзтриване
  5. Вариант 1:
    1. "Бабешки":) Намираме цялата част и остатъка от деление на 60... И преобразуваме в текст за да го оформим красиво:) ....
    =TEXT(INT(A9/60);"00")&":"&TEXT(MOD(A9;60);"00")
    NB! В случая резултата е ТЕКСТ! (т.е. не може да се обработка с функции за дата и част, а само с функции за обработка на текст!
    2. "Триков" (прочетете отново тази тема и следващата http://yuriy-excel.blogspot.com/2010/08/021-k.html !)... За да превърнете МИНУТИ в часове делите на 60 и после делите на 24 за да получите date формат!
    =A9/60/24
    След което форматирате с формат [h]:mm !

    NB! Ако искате резултата да се получи директно в клетката A9 Просто на нейно място сложете SUM(A2:A8)!

    Успех

    ОтговорИзтриване
  6. Без съветите ти нямаше да се справя, благодаря ти много, да си жив и здрав :)

    ОтговорИзтриване