Avatar billede hugopedersen Nybegynder
20. december 2015 - 12:15 Der er 27 kommentarer og
1 løsning

Hvorfor skal WEEKDAY bruges sådan

Jeg vil prøve at lave en conditional formatting i min Excel 2010, men jeg synes ikke den opfører sig særligt pænt
Jeg har en kolonne med datoer og så laver jeg en formel der hedder =WEEKDAY(ROW())=2  det giver det resultat at alle søndage bliver markeret, men ifølge al den dokumentation jeg har fundet på funktionen så burde 2 være lig med mandag

Der er en glimrende forklaring på https://exceljet.net/excel-functions/excel-weekday-function

Er det bare endnu en M$ finurlighed eller gør jeg noget forkert.
Avatar billede buddy45 Juniormester
20. december 2015 - 12:28 #1
Avatar billede ebea Ekspert
20. december 2015 - 12:50 #2
Du kan jo prøve at sætte din formel sådan her:  =WEEKDAY(ROW())
Og kopiere ned over rækken, og så se hvad tal du får.
Og hvis du laver formlen sådan her: =WEEKDAY(A1) og kopierer nedad som før, så får du andre tal end i det første eksempel.

Uden at vide det nøjagtigt, vil jeg tro at det har at gøre med, hvor du har startet din dato række.
Avatar billede ebea Ekspert
20. december 2015 - 14:24 #3
For lidt uddybning, er det msåke nemmere at forstå sådan her.
Din dato start i f.eks C1

=WEEKDAY(ROW()) indsat i B1 vil give ugedag tallet 1, da den starter der med dato (og ikke kender din dato).

=WEEKDAY(C1) med markeret celle reference (C1), indsat i A1 vil give ugedag nr. ud fra dato i cellen, da den netop refererer til en specifik dato i cellen (A1).

Så når du skriver =WEEKDAY(ROW())=2 oppe fra række 1, så vil det være falsk. Men skriver du =WEEKDAY(ROW())=1 vil det være sandt, da dato starter der som nr. 1

Men som jeg skrev i første indlæg, så ved jeg ikke hvor din dato starter.
Avatar billede store-morten Ekspert
20. december 2015 - 15:20 #4
=WEEKDAY(ROW()) bruge række nummeret fra cellen

Da Excel som standard anvender 1900 datosystemet, som tager udgangspunkt i 1. januar 1900. Dette er dag 1

Og da "return_type" er: Default. Vil den første dag/række være Søndag

Rækker 2, 9, 16..... osv. vil være "Mandag"
Avatar billede hugopedersen Nybegynder
20. december 2015 - 20:50 #5
Den første dato jeg har står i celle B3
Formateringen gælder for området =$A$3:$O$1100
Skriver jeg =WEEKDAY(ROW())=2 som formel, så bliver alle søndage markeret med rødt i mit tilfælde.

Men det er da lidt mærkeligt at det giver 2 forskellige resultater om man skriver =WEEKDAY(ROW()) eller =WEEKDAY(A3)  Den sidste kan jo ikke rigtig bruges i en formel til betinget formattering så vidt jeg kan se
Avatar billede ebea Ekspert
20. december 2015 - 22:03 #6
Hvad dato har du stående i B3?
Det kan hjælpe med at give en forklaring.

Og hvis det er til betinget formatering du bruger det, så er =WEEKDAY(??) ikke til nogen nytte, men kun som en oplysning i en celle.
Avatar billede store-morten Ekspert
20. december 2015 - 23:02 #7
=IF(WEEKDAY(A3)=2) giver SAND eller FALSK
Avatar billede store-morten Ekspert
20. december 2015 - 23:07 #8
Det er: =WEEKDAY(A3)=2 der giver SAND eller FALSK
Avatar billede xl-Enthusiast Ekspert
21. december 2015 - 09:35 #9
#4 (For information)

=WEEKDAY(1) retunerer 1, altså søndag efter amerikansk standard. Men det er en fejl i Excel da 1. januar 1900 var en mandag, ikke en søndag.

Alle ugedage før 1. marts 1900 vil være forkerte i Excel ved brug af WEEKDAY-funktionen, se for eksempel:

https://support.microsoft.com/en-us/kb/214058

Prøv at indtaste følgende:
A1: =28-02-1900
A2: =A1+1 og kopier denne celle til A3

Formater cellerne som General og du vil se 59, 60 og 61.

Altså skulle der have været en "29-02-1900", men det er ikke korrekt. 1900 var ikke et skudår og sidste dag i februar år 1900 var dermed den 28-02.
At Excel antager, at 1900 var et skudår skulle angiveligt være af kompabilitetshensyn til Lotus 1-2-3 der var bygget på denne forkerte antaglse.
Avatar billede ebea Ekspert
21. december 2015 - 10:00 #10
#9
Det er også korrekt Xl-enthusiast - men det er kun hvis man bruger =WEEKDAY() funktionen i en dato før 01-03-1900

Efter denne dato stemmer WEEKDAY funktionen korrekt.
Så det er kun i de 3 måneder at systemet ikke angiver korrekt.

I daglig "afrunding" siger man jo stadig 01-01-1900 som start af excel dato system ;-)
Avatar billede xl-Enthusiast Ekspert
21. december 2015 - 10:12 #11
#10

Er der noget nyt i forhold til det jeg skrev?
Avatar billede ebea Ekspert
21. december 2015 - 10:33 #12
#10 - Nej, ikke andet, end at indlæg #9 kunne fremstå som at der var en fejl i at bruge WEEKDAY
Avatar billede hugopedersen Nybegynder
21. december 2015 - 14:10 #13
#6 - hvorfor er WEEKDAY() ikke noget værd i en betinget formatering.
Den første dato jeg bruger i dette tilfælde er 1-12-2014 så 1904 kalenderen burde ikke give problemer. (Options-Advanced-Use 1904 calendar system)

#7 - at =IF(WEEKDAY(A3)=2) giver True/False er sådan set det jeg er ude efter for at kunne bruge det i en betinget formatering. Det er sat ind som en funktion der skal være True for at formatere en linie i mit ark

Men hvor om alting er så er jeg åben for forslag til hvordan jeg så får mit ark til at vise en markering ved hver linie hvor dagen er en søndag.
Avatar billede store-morten Ekspert
21. december 2015 - 14:26 #14
Prøv med: =WEEKDAY(A3)=2
Avatar billede ebea Ekspert
21. december 2015 - 15:22 #15
Hvis du har 01-12-2014 (mandag) i B3 så brug =WEEKDAY(B1:??)=1

Indsæt mellem klammerne, det område som du skal have formateret.

Formlen indsættes i din "conditional formatting", "use formula".
Avatar billede KurtOA Praktikant
22. december 2015 - 12:50 #16
Prøv med =WEEKDAY((A3),2) ...
Avatar billede ebea Ekspert
22. december 2015 - 13:22 #17
@hugopedersen! - det oprindelige spørgsmål (#1) var lidt tricky at forstå, da du jo egentlig havde svaret selv med hensyn til formateringen, og som virker som du angav, når du markerer området du bruger den på; men #13 gav lidt mere klarhed (for mig) hvad du mente.

Omkring det om det var en finurlighed i MS, har du selv givet en 1/3 svar på, ved at skrive i #13, at du bruger Excel dato system 1904. StoreMorten gav dig det rigtige svar i #14 for brug i 1904 dato systemet, og dermed den anden trediedel af svaret, og jeg skrev i #15, den sidste trediedel af svaret, ved at bruge 1900 dato systemet.

Så den betingede formaterings formel har du selv.

Og finurligheden er de 2 dato systemer, som giver 1 dags forskel.
1900 dato system:  =WEEKDAY(B1)=1
1904 dato system:  =WEEKDAY(B1)=2
Og så marker området som formlen skal dække!

;-)
Avatar billede hugopedersen Nybegynder
22. december 2015 - 14:56 #18
#17  Jeg har nok ikke været helt klar angående 1904 dato systemet. Det bruger jeg nemlig ikke.

#15 - hvis jeg skriver =WEEKDAY(B11..B1108)=1 så får jeg kun farvet i kolonne A og ikke hele række som jeg gerne vil. (B11 til B1108 er nyt område med datoer i) det gør jeg til gengæld med =WEEKDAY(ROW();11)=2

Jeg må åbenbart bare acceptere at jeg ikke skal sætte det tal in som jeg havde forventet for at det virker.
Avatar billede ebea Ekspert
22. december 2015 - 15:54 #19
Hvis du markerer det område (træk musen nedover) hvor du skal have farvning af Søndag (B11:B1108)  -  så vælg Conditional formatting, og use formula, og så indsæt =WEEKDAY(B11)=1 som formel, hvis du bruger 1900 dato system (ellers =2 i 1904).
Det skulle give dig en markering af hver søndag i kolonnen B, i det område som du har markeret.
Avatar billede hugopedersen Nybegynder
22. december 2015 - 19:33 #20
#19 - det markerer ikke hele linien men kun 1 felt. Jeg vil have hele linien til at blive rød (i mit tilfælde)
Det får jeg hvis jeg indsætter formelen =WEEKDAY(ROW();11)=2 til gælde i hele mit område som er A11 til P1108
Avatar billede ebea Ekspert
22. december 2015 - 20:17 #21
Det blev pludselig noget andet!

Indsæt =UGEDAG($A11)=1 som formel i Conditional formatting

Og i det markerede område, skriver du:  $A11:$1108
Avatar billede ebea Ekspert
22. december 2015 - 20:18 #22
Området skal være: $11:$1108
Avatar billede store-morten Ekspert
22. december 2015 - 20:44 #23
Du skal ikke bruge:
=WEEKDAY(ROW()) bruger række nummeret fra cellen

Du skal bruge kolonnen med datoen.

Eks. med datoer i kolonne B

Marker A11:F11 (kun 1 række, så lang ud, du har brug for, her A til F)
Betinget formatering --> Brug en formel til at bestemme.....
Indsæt formlen: =UGEDAG($B11;2)=1
Vælg fyldfarve
Tryk der efter: OK

Bem. sidst i formlen er et 1 tal= mandage farves
Ret til 2 tal= tirsdage farves


Udvid formateringen:

Med markering af A11 til F11, tryk på formatpensel og marker B1:F376 (Her et hel år ned)

Eller:
Kopier A11:F11
Marker A11:F376 Indsæt speciel, flyt markering indsæt: Alt til Formater Tryk der efter: OK
Avatar billede store-morten Ekspert
22. december 2015 - 20:55 #24
=UGEDAG($B11;2)=1 på engelsk: =WEEKDAY($B11,2)=1
Avatar billede hugopedersen Nybegynder
25. december 2015 - 15:34 #25
Det begynder at give mening og fungere

store-morten og ebea er vist dem der skal dele point så vidt jeg kan se
Avatar billede store-morten Ekspert
25. december 2015 - 16:46 #26
Det var godt :-)
Avatar billede hugopedersen Nybegynder
01. januar 2016 - 13:05 #27
Jeg mangler lige at høre fra ebea
Avatar billede hugopedersen Nybegynder
18. januar 2016 - 10:00 #28
Hørte aldrig fra ebea så nu er der lukket
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