Excel a rozdil mezi datumy   otázka

VB6/VBA

Potrebuju v excelu vyresit drobny problem. A to jaky pocet dni uplynul mezi jednotlivymi datumy.Jedno datum je aktualni a druhe je ziskavane makrem z vlastnosti souboru. Jde tedy o datum posledniho ulozeni souboru. To resim makrem :

Sub auto_open()
Dim lastSave
lastSave = ActiveWorkbook.BuiltinDocumentProperties(12)
a = Application.WorksheetFunction.CountA(Columns(1))
b = Application.WorksheetFunction.CountA(Columns(1)) + 1
ActiveSheet.Range("A12") = lastSave
End Sub

Bohuzel jsem narazil na problem v tom ze i kdyz zkousim jakekoliv formatu , tak excel stale pocita i s casem . Tedy kdyz mam datum 24.5 18.00 a aktualni treba 24.5 06.00. tak vysledek neni 1 , ale 0,5. Zaokrouhleni pouzit nejde, protoze potrebuju aby to fungovalo i trebas hned po pulnoci.

Je to nejak rozumne resitelny ?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Neprohlížel jsem kód, jen z doprovodného textu tuším, že nesprávně uvažujete o tom, co data znamenají. Máte rozdíl 12 hodin a sdělení, že 0,5 - není to půl dne a podstata problému?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To sice v realu je pravda, ale me pro dane pouziti zajima pouze rozdil datumu . NA hodinach nezalezi. Tedy i kdyz vezmu jedno datum minutu pred pulnoci a druhe minutu po pulnoci , tak rozdil sice budou 2 minuty, ale v datu je rozdil 1.A toho potrebuju dosahnout. Pouheho rozdilu datumu, ne casu. Bohuzel excel stale trva na jeho pocita podle uplynule doby.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Datum je v Excelu desetinné pořadové číslo, počítané od 1. 1. 1900. Celá část čísla jsou dny, desetinná jejich zlomky. Co vidíte v buňce, je záležitost formátu!

Zkuste si datum uložení souboru zapsaný při Workbook_Open a datum, které porovnáváte zobrazit v obecném formátu a uvidite, o čem píšu. Když zahodíte desetinné části a celé odečtete, máte rozdíl ve dnech.

Chcete-li rovnou odečíst hodnoty buněk, musíte výsledek zaokrouhlit na celé číslo nahoru funkcí ZAOKR.NAHORU() a zobrazit v obecném formátu!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

OPRAVA

to zaokrouhlení by ukazovalo o den víc - tedy ještě odečíst 1 anebo odečítat celé části - funkce CELÁ.ČÁST() anebo USEKNOUT() - princip platí

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Datum je na kalendáři a podobně ve formátované buňce, ale stejně jde o čas a ten může být v letech, měsících, týdnech, dnech, hodinách, minutách... a pořád jde o měření času!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Není důležité, jak se dostanete k časovým údajům, ale jak je odečítáte:

A B

Počáteční čas Koncový čas

9. 6. 2007 10:35 dop. 10. 6. 2007 15:30 odp.

Vzorec Popis (výsledek)

=CELÁ.ČÁST((B2-A2)*24) Celkový počet hodin mezi dvěma časy (28)

=(B2-A2)*1440 Celkový počet minut mezi dvěma časy (1 735)

=(B2-A2)*86400 Celkový počet sekund mezi dvěma časy (104 100)

=HODINA(B2-A2) Hodiny mezi dvěma časy, když rozdíl nepřekročí hodnotu 24 (4)

=MINUTA(B2-A2) Minuty mezi dvěma časy, když rozdíl nepřekročí hodnotu 60 (55)

=SEKUNDA(B2-A2) Sekundy mezi dvěma časy, když rozdíl nepřekročí hodnotu 60 (0)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback