Oprettet tir. d. 27. juli 2010 kl. 16:37:14

ae03
ae03 (3.310 point. Point ude: 0)

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?

Skrevet tir. d. 27. juli 2010 kl. 17:31:43| #1

dkhanknu
dkhanknu (33.955 point)
Hvad skal formlen returnere hvis kolonne C indeholder "" eller andre specifikke tekststrenge?

Skrevet ons. d. 28. juli 2010 kl. 08:42:17| #2

ae03
ae03 (3.310 point)
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.

Skrevet ons. d. 28. juli 2010 kl. 11:04:19| #3

dkhanknu
dkhanknu (33.955 point)
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.

Skrevet ons. d. 28. juli 2010 kl. 16:45:10| #4

dkhanknu
dkhanknu (33.955 point)
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))?

Skrevet tor. d. 29. juli 2010 kl. 09:22:01| #5

ae03
ae03 (3.310 point)
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.

Skrevet tor. d. 29. juli 2010 kl. 11:59:05| #6

dkhanknu
dkhanknu (33.955 point)
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".

Skrevet tor. d. 29. juli 2010 kl. 12:56:44| #7

ae03
ae03 (3.310 point)
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.

Skrevet tor. d. 29. juli 2010 kl. 13:14:14| #8

dkhanknu
dkhanknu (33.955 point)
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

Skrevet tor. d. 29. juli 2010 kl. 13:42:43| #9

ae03
ae03 (3.310 point)
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.

Skrevet tor. d. 29. juli 2010 kl. 14:22:59| #10

ae03
ae03 (3.310 point)
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.

Skrevet tor. d. 29. juli 2010 kl. 14:37:24| #11

dkhanknu
dkhanknu (33.955 point)
=(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.

Skrevet tor. d. 29. juli 2010 kl. 15:30:08| #12

dkhanknu
dkhanknu (33.955 point)
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 "".

Skrevet tor. d. 29. juli 2010 kl. 16:04:41| #13

ae03
ae03 (3.310 point)
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.

Skrevet tor. d. 29. juli 2010 kl. 16:18:21| #14

dkhanknu
dkhanknu (33.955 point)
Hvis du sender en fil bare med dit forsøg på den navngivne formel så kan jeg kigge på det.

Skrevet tor. d. 29. juli 2010 kl. 16:23:26| #15

ae03
ae03 (3.310 point)
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.

Skrevet tor. d. 29. juli 2010 kl. 16:24:48| #16

ae03
ae03 (3.310 point)
Sender en fil i morgen. Lige nu skal jeg skynde mig at hente børn.

Skrevet fre. d. 30. juli 2010 kl. 16:01:26| #17

ae03
ae03 (3.310 point)
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.

Skrevet fre. d. 30. juli 2010 kl. 16:09:09| #18

ae03
ae03 (3.310 point)
Rettelser til sidste linje i ovenstående modelbeskrivelse:

G3=HVIS(A3>IDAG();"";HVIS(E3=""; G2; G2+F3))

Skrevet fre. d. 30. juli 2010 kl. 19:25:43| #19

dkhanknu
dkhanknu (33.955 point)
Tag du selv point.
mvh Hans

Skrevet man. d. 02. august 2010 kl. 08:40:39| #20

ae03
ae03 (3.310 point)
Hermed lukket

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Svar til: X i en celle giver et andet resultat i anden...

Oprettet den 11. februar 2012 kl. 14.15
ashurra giver 100 point for svar | Giv et svar »

Hjælp til formel rente/antal dage

Oprettet den 11. februar 2012 kl. 12.14
petert giver 30 point for svar | Giv et svar »

Problemløser, "HVIS" formel, eller andet til optimering?

Oprettet den 11. februar 2012 kl. 02.36
Olav123 giver 150 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger