Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Excel vba/päivämäärien välinen kesto ja siitä puuttuva aika

Mamma [04.06.2010 14:12:20]

#

Tilanne on yksinkertaisuudessaan se, että minulla on kaksi päivämäärää, jonka välisen keston tarvitsen. Olen käyttänyt sen määrittelemiseen DATEDIFF-funktiota näin: TsPvm = DateDiff("m", alkupvm, loppupvm) & " kuukautta" & DateDiff("w", alkupvm, loppupvm) & " päivää".
Näin saan tiedon muodossa esim. 2 kuukautta 9 päivää. Nyt minun tarvitsisi saada tietää kuinka paljon tuosta määrästä puuttuu, jotta tulisi kuusi kuukautta täyteen eli vastauksen pitäisi olla 3 kuukautta 21 päivää (jos oletetaan, että kaikissa kuukausissa on 30 päivää).
Onko olemassa jotain funktiota, jolla tämän pystyisi kätevästi laskemaan?

Torgo [04.06.2010 15:09:23]

#

Eikö tuo sama funktio kelpaa? Eli vaihdat alkupvm:ksi loppupvm ja loppupvm:ksi pvm 6kk päähän alkupvm:stä.

Mamma [07.06.2010 07:41:38]

#

Kiitos vastauksestasi! Olen kokeillut tuota ehdottamaasi tapaa, mutta ei se oikein toimi tässä tapauksessa. Eli minun tarttis saada laskettua aika määrä (ei päivämäärää), joka puuttuu kuuudesta kuukaudesta. Kaava pitäisi olla näin: 6 kuukautta 0 päivää miinus 2 kuukautta 9 päivää ja tulos pitäisi olla muodossa 3 kuukautta 21 päivää. Tuo datediff-funktiohan laskee kahden päivämäärän eron eli se ei mielestäni nyt sovi tähän. Kokeilin myös laskea kahden päivämäärän eron tuolla datediff-funktiolla siten, että toiseen soluun tuli kuukausien erotus ja toiseen päivien erotus. Sitten ajattelin vähentää kuukausien määrän kuudesta kuukaudesta ja päivien määrän 30. Mutta sehän ei oikeasti anna oikeaa tulosta, koska siinä ei huomioida päivien määrää eli silloin olisi esim. näin:

aikaväli olisi 2.6.2008-10.8.2008 ja näiden ero laskettuna datediffillä olisi
2 kuukautta ja 9 päivää. Kun lasken puuttuvan ajan tuolla yllä olevalla tavalla, tulee vastaukseksi 4 kuukautta ja 21 päivää. Mutta sehän pitäisi olla 3 kuukautta ja 21 päivää. Miten saan sen toimimaan niin, että tuossa vähennyslaskussa otettaisiin huomioon myös noi päivät?

Torgo [07.06.2010 11:32:37]

#

Tässä esimerkki joka antaa vastauksen 2 kk ja 8 p ja jäljellä olevaksi ajaksi 3 kk ja 22 p.

Alustetaan A1 alkupvm:llä ja A2 loppupvm:llä. A3 pistetään pvm 6kk päästä näin:

=DATE(YEAR(A1),MONTH(A1)+6,DAY(A1))

Sitten lasketaan erotukset.

=YEAR(A2)-YEAR(A1)-IF(OR(MONTH(A2)<MONTH(A1),AND(MONTH(A2)=MONTH(A1),
DAY(A2)<DAY(A1))),1,0)&" years, "&MONTH(A2)-MONTH(A1)+IF(AND(MONTH(A2)
<=MONTH(A1),DAY(A2)<DAY(A1)),11,IF(AND(MONTH(A2)<MONTH(A1),DAY(A2)
>=DAY(A1)),12,IF(AND(MONTH(A2)>MONTH(A1),DAY(A2)<DAY(A1)),-1)))&" months,
"&A2-DATE(YEAR(A2),MONTH(A2)-IF(DAY(A2)<DAY(A1),1,0),DAY(A1))&" days"

Sama toistetaan A3:n ja A2:n välille. Datediffiä en ole käyttänyt, enkä nytkään kokeillut. Joten en osaa sanoa mikä siinä menee vikaan, mutta tuo ainakin toimii.

Mamma [07.06.2010 13:52:15]

#

Kiitos tuhannesti! Tämä toimii! Tästä minä saan tarvittavan kaavan ja jatkojalostamalla saan vastauksen vielä toiseenkin ongelmaani!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta