Avatar billede ae03 Novice
27. juli 2010 - 16:37 Der 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:

=HVIS(A28>IDAG();"";HVIS(SLÅ.OP(A28;Indtastningsark!$A:$A;Indtastningsark!$C:$C)="";"";SLÅ.OP(A28;Indtastningsark!$A:$A;Indtastningsark!$C:$C)))

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:

=HVIS(A28>IDAG();"";HVIS(ER.TEKST(C28);"";HVIS(D28="";"0:00";D28-C28+(C28>D28))))

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(A28>IDAG();"";HVIS(ER.TEKST(C28);"0:00";HVIS(B28<=5;E28-"7:24";HVIS(B28>5;E28;""))))

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?
Avatar billede Slettet bruger
27. juli 2010 - 17:31 #1
Hvad skal formlen returnere hvis kolonne C indeholder "" eller andre specifikke tekststrenge?
Avatar billede ae03 Novice
28. juli 2010 - 08:42 #2
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.
Avatar billede 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.
Avatar billede 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))?
Avatar billede ae03 Novice
29. juli 2010 - 09:22 #5
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.
Avatar billede Slettet bruger
29. juli 2010 - 11:59 #6
Ikke optimalt, men det kan måske hjælpe dig videre:

=IF(A2="";"";IF(C2={"Syg";"Ferie"};"0:00";IF((CODE(C2)=34)*(B2<5);E2-"7:45";IF((CODE(C2)=34)*(B2=5);E2-"6:00";IF((CODE(C2)=34)*(B2>5);E2;"")))))

Oversæt IF og CODE til HVIS og TEGN. Jeg ved ikke om "Ferie" også skal resultere i "0:00", ellers slet "Ferie" fra det der står i {}.

Code(C2)=34 checker kun at første tegn i C2 er ". Efterfølgende kan der stå hvad som helt og den logisk test vil være sand.

Såvidt jeg kan se vil det også give fejl, hvis der mangler både "komme-tid" og "gå-tid".
Avatar billede ae03 Novice
29. juli 2010 - 12:56 #7
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.
Avatar billede 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.

Hans
Avatar billede ae03 Novice
29. juli 2010 - 13:42 #9
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.

Jeg siger tak for forsøget på at hjælpe.
Avatar billede ae03 Novice
29. juli 2010 - 14:22 #10
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.
Avatar billede 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.
Avatar billede 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 "".
Avatar billede ae03 Novice
29. juli 2010 - 16:04 #13
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.
Avatar billede 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.
Avatar billede ae03 Novice
29. juli 2010 - 16:23 #15
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.
Avatar billede ae03 Novice
29. juli 2010 - 16:24 #16
Sender en fil i morgen. Lige nu skal jeg skynde mig at hente børn.
Avatar billede ae03 Novice
30. juli 2010 - 16:01 #17
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.
Avatar billede ae03 Novice
30. juli 2010 - 16:09 #18
Rettelser til sidste linje i ovenstående modelbeskrivelse:

G3=HVIS(A3>IDAG();"";HVIS(E3=""; G2; G2+F3))
Avatar billede Slettet bruger
30. juli 2010 - 19:25 #19
Tag du selv point.
mvh Hans
Avatar billede ae03 Novice
02. august 2010 - 08:40 #20
Hermed lukket
Avatar billede xjpjx Nybegynder
23. november 2013 - 11:14 #21
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester