Stránka 1 z 1
excel - rozdíl časů
Napsal: 14 zář 2009 09:07
od yavi
Mám ve sloupci A1 čas 9:48, ve sloupci B1 čas 9:38, ve sloupci C1 vzorec pro rozdíl =+(A1-B1) a vyhodí mi to 0:10 - zlepšení o 10 s. Problém je, když v B1 je čas např. 9:55 čili zhoršení času, pak mi to vyhazuje chybu. Mohl by mi někdo prosím poradit jak napsat vzorec, aby to vyhazovalo výsledky v případě lepšího času v B1 se znamínkém MÍNUS a v případě horšího času v B1se znamínkem PLUS. Díky za radu.
Re: excel - rozdíl časů
Napsal: 14 zář 2009 10:00
od mike007
Vítej na fóru Pc-help!
Excel neumí pracovat se zápornými výsledky, proto je ve výsledku chyba (křížky). Osobně bych to nahradil podmíněným formátování, tj. pokud hodnota v buňce A1 je větší než hodnota v buňce B1 = zlepšení = zelená buňka
Pokud hodnota v buňce A1 je menší než hodnota v buňce B1 = zhoršení = červená buňka. Viz příloha.
Nastavení podmíněného formátování najdeš v menu Formát --> Podmíněné formátování
Re: excel - rozdíl časů
Napsal: 14 zář 2009 10:08
od navstevnik
Format bunky cas nedovoli zobrazit zaporne cislo (format bunky cislo zobrazi zaporny vysledek). Lze si pomoci prevodem formatu na text:
C1: =KDYŽ(A1<B1;"-"&HODNOTA.NA.TEXT(ABS(A1-B1);"[h]:mm:ss");"+"&HODNOTA.NA.TEXT(A1-B1;"[h]:mm:ss")).
Re: excel - rozdíl časů
Napsal: 14 zář 2009 10:53
od yavi
Super, díky za radu, funguje to pěkně obojí. Ještě mám 1 problém, i když to už je asi o dost složitější: když třeba 1 rok nezávodil a chtěl bych to porovnat s předchozím rokem, jde to nějak zautomatizovat, aby prostě to bralo nejbližší čas? Viz příloha. díky mooooc
Re: excel - rozdíl časů
Napsal: 14 zář 2009 13:15
od navstevnik
Pozadovane automatizovani vypoctu predstavuje pouziti vlastni funkce ve VBA:
Kód: Vybrat vše
Option Explicit
Function RozdilCasu()
Dim TCll As Range
Dim NewTime As Date, OldTime As Date, Pom As Variant, i As Integer
Application.Volatile
Set TCll = Application.Caller
NewTime = TCll.Offset(0, -1).Value
i = -3
Do
On Error Resume Next
Pom = TCll.Offset(0, i).Value
If Err.Number <> 0 Then RozdilCasu = "Nenalezen predchozi cas": Exit Function
On Error GoTo 0
If Pom <> vbNullString And LCase(Pom) <> "not on the race" Then
If IsNumeric(Pom) Then OldTime = Pom: Exit Do
End If
i = i - 2
Loop
If OldTime > NewTime Then
RozdilCasu = "-" & CStr(Format(OldTime - NewTime, "h:mm;@"))
Else
RozdilCasu = "+" & CStr(Format(NewTime - OldTime, "h:mm;@"))
End If
End Function
Predpoklad: text v bunkach, kdy nebylo zavodeno je "not on the race", na velikosti pisma nezalezi.
Pro podminene formatovani:
1. podminka - vzorec: =ZLEVA(O4;1)="-" a format
2. podminka - vzorec: =ZLEVA(O4;1)="+" a format
viz priloha - sloupec O:O