Hirdetés

Keresés

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

  • Excelbarat

    tag

    válasz Regirck #16059 üzenetére

    Javasolnám hogy a jövőben változtass a tábla szerkezetén az ilyen problémák elkerülése végett...
    Szóval amin változtatni kell:
    minden nap elé beszúrsz +1 oszlopot és a napokhoz tartozó 8-18 számokat két külön cellába írod!
    Hiába az excel és a szép táblázat ha az használhatatlan. (használható de csak a felettem írt "bonyolult" függvényekkel, makróval).
    Amúgy mennyi adat van lefelére? látom csak január hónap van :) gondolod átvariálom a táblázatod ;) (áthelyezed a nevek oszlopot átküldöd nekem megcsinálom majd visszaküldöm és neked már csak vissza kell helyezni a neveket)

  • Mutt

    senior tag

    válasz Regirck #16059 üzenetére

    Hello,

    Szövegfüggvényekkel át tudod alakítani az adatokat, hogy számolni tudjon vele az Excel,
    pl. az E3-as cellára ez visszaadja amire szükséged van:

    =HAHIBA(KÖZÉP(E3;SZÖVEG.KERES("-";E3)+1;HOSSZ(E3)-SZÖVEG.KERES("-";E3))-BAL(C3;SZÖVEG.KERES("-";E3)-1);0)

    Ennek a lényeg a SZÖVEG.KERES("-";E3") ami megadja hogy hanyadik karakter a kötőjel.
    Ezek után már csak ki kell keresnünk ami ez után van (ezt a KÖZÉP függvénnyel tettem) és ki kell vonni belőle a kötőjel előtti értéket (a BAL függvényes részt).

    Szóval egy napra megvan a függvény és már csak a maradék 6 napra kell másolni és kész is vagy.
    Nem másolom be ide, mivel nagyon hosszú.

    Azonban van egy másik javaslatom: használj makrót; egy UDF (User Defined Function) nagyon meg tudja könnyíteni a munkát. A makró elég rövid:

    Function NapiOrak(Adat As Range) As Integer
    Dim cella As Range
    Dim Ido 'itt fogjuk tárolni a szétszedett időt
    Const Elvalaszto As String * 1 = "-" 'állítható elválasztó

    NapiOrak = 0

    For Each cella In Adat
    'ha a cella értéke OFF vagy ÜRES akkor nem számoljuk (0 óra)
    If cella.Value <> "OFF" And cella.Value <> "" Then
    'az aktuális cellát az elválasztó alapján felbontjuk
    Ido = Split(cella, Elvalaszto)
    'halmozzuk a számolt órákat, a felbontott idő felső és alsó értékét vesszük csak
    NapiOrak = NapiOrak + Ido(UBound(Ido)) - Ido(LBound(Ido))
    End If
    Next cella

    End Function

    Ezt használva az I3-ban a képleted már csak ennyi lesz:

    =NapiOrak(B3:H3)

    D13-ban pedig

    =NapiOrak(D3:D12)

    Feltettem ide a mintát.

    üdv.

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