Kalender i Excel med en formel (Array Entered, of Course!) - Excel Tips

Lag kalender i Excel med en formel ved å bruke formel som er angitt i matrisen.

Se på denne figuren:

Kalender i Excel - desember

Den formelen, =Cooler den samme formelen i hver celle fra B5: H10! Se:

Basis kalenderformel

Den ble matrikulert når B5: H10 først ble valgt. I denne artikkelen vil du se hva som ligger bak formelen.

Forresten, det er en celle som ikke vises enda som er måneden som skal vises. Det vil si at celle J1 inneholder =TODAY()(og jeg skriver dette i desember), men hvis du endrer den til 5/8/2012, vil du se:

Måned endret til mai

Dette er mai 2012. OK, absolutt kult! Start fra begynnelsen, og arbeid deg opp til denne formelen i kalenderen og se hvordan den fungerer.

Anta også at i dag er 8. mai 2012.

Se først på denne figuren:

Eksempelformel

Formelen gir egentlig ikke mening. Hvis den var omgitt av =SUM, men du vil se hva som ligger bak formelen, vil du utvide den ved å velge den og trykke på F9-tasten.

Velg formel

Figuren over blir figuren nedenfor når du trykker på F9-tasten.

Hva ligger bak formelen

Legg merke til at det er en semikolon etter 3 - dette indikerer en ny rad. Nye kolonner er representert med komma. Så du kommer til å dra nytte av det.

Antall uker i en måned varierer, men ingen kalendere trenger mer enn seks rader for å representere en måned, og selvfølgelig har de alle syv dager. Se på denne figuren:

Kalenderområde

Skriv inn verdiene 1 til 42 manuelt i B5: H10, og hvis du skriver =B5:H10inn en celle og deretter utvider formellinjen, ser du hva som vises her:

Utvid formelen i formellinjen

Legg merke til plasseringen av semikolonene - etter hvert multiplum av 7 - som indikerer en ny rad. Dette er starten på formelen, men i stedet for en så lang, kan du bruke denne kortere formelen. Velg B5: H10. Type

=(0;1;2;3;4;5)*7+(1,2,3,4,5,6,7)

som formel, men ikke trykk Enter.

For å fortelle Excel at dette er en matriseformel, må du holde Ctrl + Shift nede med venstre hånd. Mens du holder Ctrl + Shift, trykker du Enter med høyre hånd. Slipp deretter Ctrl + Shift. For resten av denne artikkelen vil dette settet med tastetrykk kalles Ctrl + Shift + Enter.

Hvis du gjorde Ctrl + Shift + Enter riktig, vil krøllete bukseseler vises rundt formelen i formellinjen, og tallene 1 til 42 vil vises i B5: H10 som vist her:

Krøllete bukseseler rundt formelen

Legg merke til at du tar tallene 0 til 5 atskilt med semikolon (ny rad for hver) og multipliserer dem med 7, og effektivt gir dette:

Utvid mer - radindeks multiplisert med 7

Den vertikale orienteringen av disse verdiene lagt til den horisontale retningen av verdiene 1 til 7 gir de samme verdiene som vist. Utvidelsen av dette er identisk med det du hadde før. Anta at du nå legger til I DAG i disse tallene?

Merk: Det er veldig vanskelig å redigere en eksisterende matriseformel. Følg disse trinnene nøye: Velg B5: H10. Klikk i formellinjen for å redigere den eksisterende formelen. Skriv + J1, men ikke trykk Enter. For å godta den redigerte formelen, trykk Ctrl + Shift + Enter.

Resultatet for 8. mai 2012 er:

Resultatet for 8. mai 2012

Disse tallene er serienumre (antall dager siden 1/1/1900). Hvis du formaterer disse som korte datoer:

Formatert rekkevidde

Klart ikke riktig, men du kommer dit. Hva om du formaterer disse som bare "d" for månedsdagen:

Formater som 'dag' i måneden

Ser nesten ut som en måned, men ingen måneder starter med den niende i måneden. Ah, her er ett problem. Du brukte J1 som inneholder 5/8/2012, og du må virkelig bruke datoen for den første i måneden. Så antar at du legger =DATE(YEAR(J1),MONTH(J1),1)inn J2:

Dato for første måned

Cell J1 inneholder 5/8/2012 og celle J2 endrer det til den første i måneden av det som er angitt i J1. Så hvis du endrer J1 i formelen til kalenderen til J2:

Endre basisdatoen som den første datoen i måneden

Nærmere, men fortsatt ikke riktig. En ytterligere justering er nødvendig, og det er at du trenger å trekke ukedagen den første dagen. Det vil si at celle J3 inneholder =WEEKDAY(J2). 3 representerer tirsdag. Så hvis du trekker J3 fra denne formelen, får du:

Skift etter ukedag

Og det er faktisk riktig for mai 2012!

Ok, du er virkelig nær. Det som fremdeles er galt er at 29. og 30. fra april dukker opp i mai-kalenderen, og 1. juni til og med 9. dukker også opp. Du må fjerne disse.

Du kan gi formelen et navn for lettere referanse. Kall det "Cal" (ikke "kult" ennå). Se denne figuren:

Lag en navngitt formel

Deretter kan du endre formelen til å være =Cal(fortsatt Ctrl + Shift + Enter):

Endre matriseformelen med den navngitte formelen

Nå kan du endre formelen for å lese at hvis resultatet er i rad 5 og resultatet er over 20, si at resultatet skal være tomt. Rad 5 vil inneholde den første uken i en måned, så du bør aldri se noen verdier over 20 (eller noe over syv vil være galt - et tall som 29 som du ser i celle B5 i figuren ovenfor er fra forrige måned). Så du kan bruke =IF(ROW()=5,IF(DAY(Cal)>20,"",Cal),Cal):

Forrige måneds datoer

Legg først merke til at celler B5: D5 er tomme. Formelen lyder nå "Hvis dette er rad 5, så hvis DAGEN for resultatet er over 20, vis blank".

Du kan fortsette å fjerne de lave tallene på slutten - neste måneds verdier. Slik gjør du dette enkelt.

Rediger formelen og velg den endelige referansen til "Cal"

Neste måneds datoer - 1

Begynn å skrive IF (ROW ()> 8, IF (DAY (Cal) <15, "", Cal), Cal) for å erstatte den endelige Cal.

Neste måneds datoer - 2

Den endelige formelen skal være

=IF(ROW()=5,IF(DAY(Cal)>20,"",Cal),IF(ROW()>8,IF(DAY(Cal)<15,"",Cal),Cal))

Trykk Ctrl + Shift + Enter. Resultatet skal være:

Resultat-1

To ting igjen å gjøre. Du kan ta denne formelen og gi den navnet "Cool":

Navn formelen som 'Cool'

Bruk det deretter i formelen vist her:

Resultat-2

Forresten blir definerte navn behandlet som om de er matriksoppgitt.

Det som gjenstår å gjøre er å formatere cellene og legge inn ukedagene og navnet på måneden. Så du utvider kolonnene, øker radhøyden, øker skriftstørrelsen og justerer teksten:

Formatere området

Sett deretter rammer rundt cellene:

Kalender grenser

Slå sammen og sentrer måneden og året og formater det:

Månedens navn og år

Slå deretter av rutenettlinjer, og voila:

Sluttresultat - Kalender

Denne gjesteartikkelen er fra Excel MVP Bob Umlas. Det er fra boken, Excel utenfor boksen. For å se de andre emnene i boka, klikk her.

Interessante artikler...