Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 18. 1. 2011 21:43:00

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Výpočet věku makrem

Zdravím,
potřeboval jsem výpočet věku (současnost - datum narození) zaokrouhlenou na celé roky. Bohužel nepodařil se mi vzorcem odstranit problém přestupných let - nepřesnost výsledku napřiklad v den narozenin u starších kteří již mají jeden nebo více přestupných let za sebou.
Nakonec jsem to vyřešil tímto makrem, ale přijde mi to jako příliš krkolomné řešení.
V podstatě jsem rozsekal datum na dny, měsíce a roky a s každým počítal zvlášť:

Function roky(d)
roky = year(d)
end function

function mesice(d)
mesice = month(d)
end function

function dny(d)
dny=day(d)
end function

sub vypocet
a=thisComponent.sheets(0).getCellRangeByName("D7")

rokyditete=roky(a.value) 
mesditete=mesice(a.value)
dnyditete=dny(a.value)

rokyted = year(now)
mested = month(now)
dnyted = day(now)

rokvysledek = rokyted - rokyditete
mesvysledek = mested - mesditete
dnyvysledek = dnyted - dnyditete

select case dnyvysledek
 case -31 to -1
  mesvysledek = mesvysledek - 1
 case 0
  mesvysledek = mesvysledek
 case 1 to 31
  mesvysledek = mesvysledek
end select

select case mesvysledek
 case -12 to -1
  rokvysledek =  rokvysledek - 1
 case 0
  rokvysledek = rokvysledek
 case 1 to 12
  rokvysledek = rokvysledek
end select


Rem následuje umístění výsledku do bunky a end sub

Musí snad existovat jednodušší řešení? Jak to vidím bude to nějaká jednoduchá funkcička kterou jsem nenašel a objevoval Ameriku yikes

Lze toto řešit i vzorcem v Calcu?

Díky všem machrům za odpověď


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#2 18. 1. 2011 23:37:42

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: Výpočet věku makrem

Předpokládám, že v A1 je datum...

=TRUNC(YEARFRAC(A1;TODAY();1);0)

(V nápovědě se tvrdí, že funkce vrací hodnoty 0 - 1, ale nevěřte tomu, vrací počet let + zlomek)

Offline

#3 19. 1. 2011 06:27:04

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Výpočet věku makrem

lp. napsal(a)

Předpokládám, že v A1 je datum...

=TRUNC(YEARFRAC(A1;TODAY();1);0)

(V nápovědě se tvrdí, že funkce vrací hodnoty 0 - 1, ale nevěřte tomu, vrací počet let + zlomek)

Super tohle jsem nezkoušel, v nápovědě je že počítá s přesným počtem dní v roce a já myslel, že to dopadne stejně jako když odečtu dvě data.
V jednoduchosti je krása, ale tu Ameriku jsem objevil ;-)
Dík


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí