Nejste přihlášen/a.
Potřebuji v Excelu zadat čas v minutách. Zadání ve tvaru 00:02:10 sice funguje, ale není to praktické. Jak naformátovat buňku v Excelu, aby se při zadání času v buňce objevil jen údaj v minutách 02:10 a údaj se automaticky nepřevedl na hodiny 02:10:00?
Ještě lepší by bylo, kdyby se výsledek automaticky zaokrouhlil nahoru (na 3 minuty), ale to už bych asi chtěl moc
S textem nejdou dělat výpočty. Jde sice převézt text na hodnotu, ale to mi v tomto případě přijde jako drbání levou nohou za pravým uchem.
Svým způsobem je to prasárna, ale můžete zadat 2:10, zobrazovat to jako 2:10 [H]:MM, nebo 02:10 [HH]:MM, podle toho, co vám více vyhovuje a ve výpočtech takto zadaný čas dělit šedesáti.
Zaokrouhlení jde pořešit tak, výše uvedeným způsobem zadaný čas vynásobíte 24, zaokrouhlíte nahoru a pak vydělíte, ale číslem 1440 (24*60) a výsledek naformátujete M:SS nebo MM:SS
Nemám Excel, testoval jsem v LibreOffice Calc, ve formátovacích kódech mohou být drobné odlišnosti.
.
Formátovací kódy jsou stejné, ale calc se chová trochu jinak k zadávání, toho jsem si už mnohokrát všimnul (třeba datum musíte ukončit tečkou např. 8.2. zatímco v excelu stačí 8.2 a jak jem právě vyzkoušel, pokud se zadá formát buňky [m]:ss tak zadání bere jako zadání v minutách, to excel nedělal (vždy to bral jako hodiny) a já to musel složitě řešit (pomocí maker), abych dosáhnul chtěného výsledku).
Taky jsem kdysi řešil části sekund, v LO calcu opět bez problémů, ale v excelu jsem po mnoha neúspěších (ono to fungovalo jak kdy, hlavně excel ty milisekundy nebo setiny sekund odřezával už v zadání, teda jen někdy, takže jsem nevěděl, jestli tam je nula, protože byla zadaná nebo protože je to oříznuté) prostě udělal zadávání do 4 sloupců, kam se zadávaly hodiny, minuty, sekundy a setiny a pak jsem to slučoval.
[mm]:ss
ty hranaté závorky řeknou, že má zobrazovat všechny minuty a nepřevádět je do hodin, dnů atd.
Ale jak se zadáním, to teda nevím. Řešil jsem to svého času makrem (navázaným na on change), které, když bylo zadané číslo, tak to na minuty převedlo. Ale jiný způsob, aby se nemusela zadávat ta 0: (tedy např. 0:2:10) neznám.
Teď to zkouším v LO calcu a tam, když dám formát buňky [mm]:ss tak to přesně tak funguje, zadám 6:30 a ono to zůstane jako minuty (teda udělá se 06:30, ale když by se dalo jen [m]:ss bude to bez té úvodní nuly). Ale jsem si jistý, že excel se tak nechová (aspoň co znám verzi 2003).
Bohužel nejde změnit chování Excelu pro vstup dat. V tomto případě si můžete pomoct pouze VBA - postup:
Buňky, které chcete zadávat jako mm:ss označte ve formátování jako Text (buňky musí být prázdné). Poté stiskněte ALT+F11 a do Worksheet toho listu vložte následující kód. Jen na 4. řádku změňte rozsah buněk, pro který se bude tento styl zápisu vztahovat (já měl pro příklad matici A1 až J10). Zavřete VBA a můžete začít zvesela zadávat hodnoty a nadále s nimi pracovat (viz například součet v mém příkladu v printscreenu)..
Pokud zadáte 1234 dostanete 12:34
Pokud zadáte 1 dostanete 00:01
Pokud zadáte 12 dostanete 00:12
Pokud zadáte 123 dostanete 01:23
atd.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Intrsct As Range, Cell As Range, s As String
Dim mins As Long, secs As Long, t As Date
Set Intrsct = Intersect(Range("A1:J10"), Target)
If Intrsct Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Cell In Intrsct
s = Cell.Text
If s = "" Then
Cell.NumberFormat = "@"
ElseIf Len(s) > 4 Then
Cell.Clear
Cell.NumberFormat = "@"
Else
s = Right("0000" & s, 4)
If s Like "####" Then
mins = CLng(Left(s, 2))
secs = CLng(Right(s, 2))
t = TimeSerial(0, mins, secs)
Cell.NumberFormat = "[mm]:ss"
Cell.Value = t
Else
Cell.Clear
Cell.NumberFormat = "@"
End If
End If
Next Cell
Application.EnableEvents = True
End Sub
To je přesně ono, já teď nemám po ruce sešit, ve kterém jsem to řešil, ale tam bylo potřeba ještě ošetřit, že v některých sloupcích měla zůstat čísla, v některých text, takže to makro onchange mělo ještě na začátku podmínku, jestli je řádek větší než 3 (první tři řádky byly záhlaví) a sloupec je ten nebo ten nebo ten, což ale jak koukám tam taky máte jen trochu jinak.
Jo a vypnout eventy mě nenapadlo (respektive mě nenapadl, že to jde), já to měl ošetřené tak, že když se to makro zavolalo znova, po změně buňky jím samým, tak se to ignorovalo, protože hodnota buňky už nebylo celé číslo (tím bylo i ošetřené, pokud to uživatel poctivě nadatloval jako čas s dvojtečkama). Myslím, že nějak tak jsem to tehdy ošetřil.
Ale pořád říkám, že to je kanón na vrabce.
Hmmm... Sice toho o Excelu (2003) vím docela dost (používám makra až s několika desítkami příkazů, i když v podstatě jednoduchá), ale tohle je na mě a pro mé účely přece jen trochu moc . Naíc potřebuju aby se to zobrazovalo automaticky, bez spouštění makra.
Takže mi asi nezbyde nic jiného, než tam tu nulu na začátku psát. No nic, je to protivné a méně přehledné, ale prsty mi proto neupadnou.
Toto makro se spouští v tom listu automaticky s každou jeho změnou (proto je to ten typ "Change", tedy s každou jeho změnou). Tzn. opravdu stačí napsat do té buňky pouze např. 1256 a buňka se sama změní na "0:12:56", vůbec se toho nebojte. Nebudete muset makro spouštět ručně.
Je to záležitost 30s - CTRL+C a CTRL+V do maker, v makru přepsat ten rozsah pro jaké všechny buňky to bude hlídat/dělat potřebné změny a následně změnit formát těch buněk na text. To je celé..
Tam je jen průšvih, že při každém otevření sešitu je potřeba odsouhlasovat spouštění maker (nebo to povolit globálně a tím snížit úroveň zabezpečení). I to je důvod, proč se mi řešení s makry nelíbí, i když jsem ho taky před léty použil na stejném principu. Druhá věc je, že makra označil mickosoft před nějakou dobou jako obsolete nebo deprecated už nevím a v nových verzích se je chystá zrušit a nahradit něčím jiným (co bude používat zřejmě python), ale to bude problém v nových verzích.
Makro jako tohle se spouští samo, je vyvolané určitou událostí, tady třeba změnou hodnoty kterékoliv buňky, makra se dají navázat i na jiné události. Uživatel se nemusí o nic starat, jen je musí dovolit.
Makra mají docela velkou sílu (můžou sice jen dělat nějaké takové blbosti, ale můžou klidně spouštět cokoliv, mohou si i volat funkce z dll knihoven), a ono povolování všechno nebo nic (bez odlišení jestli jenom mění černý text na červený nebo se hrabe v souborech nebo volá externí funkce) je právě dost hloupé.
To už je asi na tazateli. Jestli ručně vkládá desítky/stovky záznamů, tak potom je to na zvážení pro a proti (ulehčení práce vs případné bezpečnostní riziko). Ale osobně, pokud bych neměl v PC nějaké extra tajné informace v hodnotě desítek/stovek mega, tak bych tato případná rizika z maker vůbec neřešil a využíval toho, kolik mi to ušetří práce.
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.