Új hozzászólás Aktív témák

  • azopi74

    addikt

    válasz TrollBalint #25778 üzenetére

    Milyen sok hivatkozás és lista? :) Én a te általad készített hivatkozásokat és listákat használtam, és a te képletedet használtam a nap típus meghatározására is :)

    Csak táblává alakítottam a range-eidet, mert utálok cellahivatkozásokkal szórakozni, így szerintem sokkal olvashatóbb a képlet, és átláthatóbb az egész, mintha Range hivatkozásokkal nyomnánk be (no meg a munka is sokkal gyorsabb vele, mint range-ekkel, és robusztusabb is)

    Nem olvashatóbb az, hogy

    =IF(COUNTIF(Munkanapok[Munkanapok],[@Day])>0,"Workday",IF(OR(WEEKDAY([@Day],2)>5,COUNTIF(Mszunet[Munkaszüneti napok],[@Day])),"Holiday","Workday"))

    , mint az, hogy

    =IF(COUNTIF(Settings!$K$2:$K$4,Settings!$E2)>0,"Workday",IF(OR(WEEKDAY(Settings!$E2,2)>5,COUNTIF(Settings!$I$2:$I$16,Settings!$E2)),"Holiday","Workday"))

    ?

    (ez a te függvényed)

    Ilyen adatbázis szintű feladatok, strukturált táblázatok esetén mindig egészségesebb táblákkal dolgozni minden szempontból. Megéri, egy mozdulat az egész (Insert - Table) Most részletezném minden előnyét, mert estig azokat sorolnám, kezdd el használni, sose fogz többé range-ekkel és cellákkal bajlódni :) (csak amikor nagyon muszáj,, mert pl olyan szemét formában kapod az adatokat) :).

    Táblák egyébként Excel 2002 óta vannak támogatva, valamiért mégis kevesen használják számomra érthetetlen módon.

    A függvények, amiket használtam, alap excel függvények, mindegyiknek mennie kell 2007-en.

    Countifs 2003 óta megy (előtte tömbfüggvényekkel kellett bajlódni ilyesmikhez)
    Index, match és vlookup pedig emberemlékezet óta van az excel-ben, azok nélkül elég nehéz lenne az élet :) Bár vlookup-ut ki lehetne dobni :) . 97 óta biztosan benne vannek, előtte nem tudom, mert nem nagyon használtam. Más függvényt nem használtam.

    A képletek:

    Eltelt munkanapok:

    =COUNTIFS([Type],"Workday",[Day],"<="&[@Day])

    Szerintem ezt nem kell magyarázni, (bár ezt lehetett volna sime countif-fel is, de az nem áll az ujjaimra :)

    az mnapok - hoz használt képlet:

    =COUNTIFS(DayType[Type],"Workday",DayType[Day],">="&[@KezdoDatum],DayType[Day],"<"&[@ZaroDatum])

    Csak annyit tesz, hogy összeszámolja a kezdő és végső dátum közötti munkanapokat (ahol teljesül mindhárom feltétel)

    Zarodatum-hoz használt kalkuláció egy kicsit összetettebb, de nem túl bonyolult:

    =INDEX(DayType[Day],MATCH(VLOOKUP([KezdoDatum],DayType,3,0)+[mnapok],DayType[WorkDayCum],0),1)

    VLOOKUP([KezdoDatum],DayType,3,0)+[mnapok] [I]-> Spoiler[/I]

    Kikeresi a napok táblájában az adott napig eltelt munkapok számát, hozzáadja a hozzáadandó munkanap számot. Bár nem szép megoldás a vlookup, kerülendő a használata, egyrészt korlátoltsága, másrészt sebezhetősége miatt, így szinte mindig INDEX + MATCH használata javasolt helyette. De most ezt választottam az egyszerűség kedvéért.

    =INDEX(DayType[Day],MATCH([I][SP]VLOOKUP([KezdoDatum],DayType,3,0)+[mnapok][/SP][/I],DayType[WorkDayCum],0),1)

    Visszakeresi ugyanitt azt az első napot, ami az előző függvény által visszadott érték, vagyis ameddig az eredetileg eltelt + hozzáadandó munkanapok teltek el. Itt már ugye, ha akartam se tudtam volna VLOOKUP-ot használni a korlátai miatt, csak úgy, ha további segédoszlopot használok. Egyébként többfüggvénnyel mindenféle segédoszlop nélkül is meg lehetett volna oldani a dolgot :)

    [ Szerkesztve ]

Új hozzászólás Aktív témák