27. juli 2010 - 16:37Der er
20 kommentarer og 1 løsning
er.tekst i celle med reference
Jeg har følgende kolonner i et regneark:
A dato B ugedag(A;2) (mandag=1...søndag=7) C kommetid (tt:mm) D gåtid (tt:mm) E arbejdstid (D-C+(C>D)) F +/- tid for dagen ([t]:mm) G Total +/- ([t]:mm)
I kolonne C og D henter jeg værdier fra fanen 'Indtastningsark' med følgende formel:
Det virker fint og returnerer det indtastede klokkeslet for at møde på arbejde eller tekst (fx "Syg", "Ferie"...) fra den relevante celle i indtastningsarket.
I kolonne E beregner jeg arbejdstiden med formlen:
Det virker også fint, selv om jeg vist lige så godt kunne undvære den sidste HVIS-sætning, idet det efterhånden er gået op for mig (jf. problembeskrivelsen herunder), at ER.TEKST returnerer SAND, hvis formlen i C sætter celleværdien til "".
Det er det sidste punkt, der volder mig problemer i kolonne F, hvor jeg bruger formlen:
Hvis der returneres et klokkeslet eller en tekststreng til kolonne C, virker formlen fint og angiver D-C eller 0:00, men hvis der returneres "" til kolonne C (dvs. ingen arbejdstid pga flexfri), angives ligeledes 0:00, hvilket ikke rigtigt er meningen. Kan jeg komme uden om det problem uden at skulle angive en HVIS-formel for hver enkelt af de specifikke tekststrenge ("Syg", "Ferie"...), som bruges i kolonne C?
Hvis C indeholder en tekststreng, fx "Syg", skal formlen returnere "0:00", idet der i så tilfælde hverken er plus eller minus til flexkontoen den pågældende dag. Hvis C derimod er tom (eller rettere ""), er der ikke nogen arbejdstimer registreret den pågældende dag. I så fald skal formlen returnere E28-7:24, hvis B <= 5, og E28, hvis B > 5. Dvs., at der returneres -7:24, hvis der er tale om en normal arbejdsdag (man-fre) og 0:00, hvis det er lørdag eller søndag.
Synes godt om
Slettet bruger
28. juli 2010 - 11:04#3
Jeg kan ikke følge hvordan din formel i kolonne E virker og derfor er jeg i tvivl om, hvilken løsning jeg skal foreslå, men hvis du vil sende en kopi af filen til (i udtale) hanspunktumknudsensnabelamailpunktumtelepunktumdk så kigger jeg på det.
Synes godt om
Slettet bruger
28. juli 2010 - 16:45#4
Under alle omstændigheder kan du ikke få Excel til at vise negativ tid som du indikerer i følgende sætning (i #2)
Dvs., at der returneres -7:24, hvis der er tale om en normal arbejdsdag (man-fre) og 0:00, hvis det er lørdag eller søndag
medmindre du ændrer til 1904 datosystem.
Men hvordan får du E28 til at returnere andet end fejl hvis C28 er lig med "", hvis formlen i E28 er som du skriver: arbejdstid (D-C+(C>D))?
Jeg bruger 1904-datosystm, da det jo er forudsætningen for, at det virker.
Som formlen gerne skulle virke, kommer der ikke nogen fejl: Hvis der står tekst i C sættes E til 0:00, ellers hvis A er "", sættes E til "" (A viser kun datoen for den aktuelle eller tidligere dage, ikke for fremtidige), ellers hvis D er blank (ingen gåtid - enten fordi der ikke er nogen arbejdstid (dvs. heller ingen kommetid i C), eller fordi gåtiden ikke er registreret) sættes E til 0:00. Kun derefter sættes E til (D-C+(C>D)).
Der skulle således ikke være nogen risiko for en fejlværdi, med mindre man da lige vælger at registrere en gåtid uden at registrere en kommetid, hvilket ikke er hensigten.
Jeg kan ikke sende arket, men formlerne er som følger: A DATO Her indtastes en startdato i A2, fx 01-01-2010 A3=HVIS(A2=""; ""; HVIS(A2+1<=IDAG(); A2+1; "")) B Ugedag B2=HVIS(A2<=IDAG(); UGEDAG(A2;2); "") C Kommetid Blank til der indtastes tid eller tekst D Gåtid Blank til der indtastes tid eller tekst E Arbejdstid =HVIS(ER.TEKST(C2); "0:00"; HVIS(A2=""; ""; HVIS(D2=""; "0:00"; D2-C2+(C2>D2)))) F +/- =HVIS(A2=""; ""; HVIS(ER.TEKST(C2); "0:00"; HVIS(B2<5; E2-"7:45"; HVIS(B2=5; E2-"6:00"; HVIS(B2>5; E1; ""))))) G Flextotal G2=F2 G3=HVIS(A3=""; ""; G2+F3)
Hvis du kopierer formlerne ind i et ark med 1904-datosystem, burde de virke umiddelbart.
Synes godt om
Slettet bruger
29. juli 2010 - 11:59#6
Ikke optimalt, men det kan måske hjælpe dig videre:
Er der ikke et problem ved at tjekke for "? Der står ikke "Syg" i C, kun Syg. Og jeg kan ikke så godt tjekke for alle muligheder (syg, ferie, barn syg...), da jeg hurtigt render ind i Excels begrænsning for antal indlejrede formler.
I øvrigt er den danske betegnelse for CODE ikke TEGN. Det er KODE. TEGN svarer til SIGN.
Du bruger matrix-formler, hvilket bestemt ikke er optimalt, da de ikke automatisk opdateres, når cellerne, som formlerne refererer til, opdateres. Det er noget rod, hvis der skal bruges crtr+shift+enter hver gang en celle i kolonnen skal opdateres.
Synes godt om
Slettet bruger
29. juli 2010 - 13:14#8
ae03: I øvrigt er den danske betegnelse for CODE ikke TEGN. Det er KODE. TEGN svarer til SIGN
OK. Jeg bruger ikke matriksformler og der skal ikke bruges Ctrl+Shift+Enter hver gang.
Og jo - der er mange problemer i hele den måde du har opbyggget din model på. Jeg afstår fra yderligere forslag.
Beklager misforståelsen om matrix. Jeg er ikke bekendt med notationen "CODE(C2)=34)*(B2=5)" og "(CODE(C2)=34)*(B2>5)" i hvis-sætninger. Jeg kan godt se, at det ikke er matrix-beregninger. Er det bare en anden måde at skrive OG, eller har * nogle særlige egenskaber?
Det er muligt, at min model ikke er optimal, selv om jeg nu ikke lige kan gennemskue en bedre måde at opnå samme funktion på, men det eneste problem, jeg umiddelbart oplever, er det med, at Excel opfatter "" returneret fra en formel som en tekststreng.
Så har jeg selv fundet løsningen. Hvis jeg i E og F erstatter ER.TEKST(C2) MED (ER.TEKST(C2))*(C2<>""), fungerer det efter hensigten.
dkhanknu: Jeg havde ikke selv fundet det uden dine forsøg på at hjælpe, så hvis du stadig følger denne tråd, vil jeg gerne give dig pointene. Hvis du svarer inden for en uge, er det dine. Ellers lukker jeg den selv.
Synes godt om
Slettet bruger
29. juli 2010 - 14:37#11
=(CODE(C2)=34)*(B2<5) er det samme som: =--AND(CODE(C2)=34;B2<5), så JA, det er bare en anden måde at skrive OG.
Du må vel have dine meget gode grunde til overhovedet at have "" i kolonne C. Jeg har umiddelbart svært ved at forstå det, men sådan er der så meget.
Du skrev tidligere: Og jeg kan ikke så godt tjekke for alle muligheder (syg, ferie, barn syg...),
Det kan du da sagtens, for eksempel i en navngiven formel som: Name: myText Refers to: ={"syg"; "ferie"; "barn"; ..... } Herefter bruger du bare myText i din formel.
Synes godt om
Slettet bruger
29. juli 2010 - 15:30#12
Du skrev:
"Hvis jeg i E og F erstatter ER.TEKST(C2) MED (ER.TEKST(C2))*(C2<>""), fungerer det efter hensigten"
Det forstår jeg ikke.
Hvis C2 indeholder "" hvad returnerer formlen: =(ER.TEKST(C2))*(C2<>"") så?
Ved mig returnerer den 1 (=TRUE).
En AND-konstruktion (ovenfor erstattet af *) er TRUE hvis og kun hvis alle argumenter er TRUE. Det vil sige, at (C2<>"") evalueres som TRUE (check det selv med formelrevisionsværktøjet). Altså - du kan ikke bruge C2<>"" til at teste om C2 indeholder tekststrengen "".
Min beskrivelse herover af C og D er vist ikke helt korrekt, for i praksis slår jeg komme- og gåtiderne op i et andet ark. Derfor er cellerne heller ikke tomme (så jeg kan ikke bruge ER.TOM i mine formler), og jeg skal derfor angive "", hvis ikke der skal stå 0:00, når der slås op i en tom celle.
Min grund til at angive "" i C og D er, at det giver et bedre overblik, hvis de er blanke, når der ikke registreres arbejdstid eller en fraværsgrund. Det ville formentlig virke fint, hvis jeg i stedet angav 0:00 i komme og gåtider, men så bliver arket sværere at overskue, da der mangler de nogenlunde regelmæssige mellemrum fra arbejdsfri weekender.
Ideen med at bruge navngivne formler er ikke så tosset. Jeg har ikke prøvet før, men ud fra hjælpen er det ikke svært. Eller det troede jeg i hvert fald ikke, men der er noget, der driller. Jeg har defineret formlen og angivet fraværsårsager, som du specificerer, men formlen virker kun for den føste årsag på listen. De øvrige årsager finder den ikke.
Synes godt om
Slettet bruger
29. juli 2010 - 16:18#14
Hvis du sender en fil bare med dit forsøg på den navngivne formel så kan jeg kigge på det.
Til #12: Du har helt ret i, at det ikke virkede, men det var nu ikke af den grund, som du angiver. Formålet med at tilføje *(C2<>"") var netop at opnå true, hvis der stod anden tekst i C end "". Der var bare et par andre "småting", der ikke virkede. Det nåede jeg bare ikke at opdage, inden jeg svarede, fordi min Excel lige tog sig en miniferie midt i det hele.
Men da navngiven formel er en langt mere elegant løsning, vil jeg forsøge at få den til at virke i stedet.
Jeg har fundet en løsning, der virker. I stedet for en navngiven formel bruger jeg ER.TAL(SAMMENLIGN(C2; reference til celleområde med accepterede fraværsårsager: 0)).
A DATO Her indtastes en startdato i A2, fx 01-01-2010 A3=HVIS(A2=""; ""; HVIS(A2+1<=IDAG(); A2+1; "")) B Ugedag B2=HVIS(A2<=IDAG(); UGEDAG(A2;2); "") C Kommetid Hentes fra et andet ark med funktionen SLÅ.OP. Indeholder kommetid eller årsag til fravær (syg, ferie,...) D Gåtid Hentes fra et andet ark med SLÅ.OP. E Arbejdstid E2=HVIS(A2>IDAG();"";HVIS(ER.TAL(SAMMENLIGN(C2; Indtastningsark!$J$10:$J$14; 0));"";HVIS((D2="")*B2<=5); "0:00";HVIS((D2="")*(B2>5);"";D2-C2+(C2>D2))))) F +/- F2=HVIS(A2>IDAG();"";HVIS(ER.TAL(SAMMENLIGN(C2; Indtastningsark!$J$10:$J$14; 0));"0:00";HVIS(B2<=5; E2-"7:24";E2))) G Flextotal G2=F2 =HVIS(A3>IDAG();"";HVIS(E3=""; G3; G3+F3))
Jeg vil stadig gerne give dig - dkhanknu - pointene, da jeg ikke havde fundet den, hvis ikke du havde ledt mig på rette spor. Er der andre, der har mere elegante løsninger til udformning af et Excel-ark til registrering af arbejdstid, kunne det da være interessant at se det, men nu virker dette i hvert fald.
syndes du skulle kikke på denne www.firmaplan.dk er ret sikker på at det vil være til en stor hjælp..
mvh jan jensen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.