SharePoint

Het werken met de calculated kolom

16 februari 2012

In SharePoint kun je met de calculated kolom een berekening doen op basis van een andere kolom. De syntax van de formule lijkt op die van Excel. Met de calculated kolom zijn leuke dingen te doen. Lees verder om hier meer over te weten te komen.

De volgende koppelingen zijn erg handig:

[listdot]

[listdot]
Deze post gebruik ik om voorbeelden te geven van de calculated kolom.

Weergeven van een Jaartal, Maand, Dag:

Met de formule YEAR() haal je uit een datum het jaartal op. Als je dit doet krijgt het jaartal in de kolom een punt op het duizendtal, om dit te voorkomen moet je de formule uitbreiden met TEXT() en een nul. Het maakt niet uit of je één, twee, drie of vier nullen opgeeft. Het resultaat is hetzelfde. Als je vijf nullen opgeeft komt er voor het jaartal een nul. De maanden worden gelijk goed weergegeven. Als je voor een datum altijd twee posities nodig hebt kun je voor de maand hetzelfde doen. Het voorbeeld hieronder laat links de fomule zien en rechts het resulataat zoals hij in de lijst is:

Als je met de formule MONTH() de maand uit een datum haalt krijg je een getal. Met de formule CHOOSE() kun je het getal vervangen met eigen tekst:

=CHOOSE(MONTH(Modified),”January”,”February”,”March”,”April”,”May”,”June”,”July”,”August”,”September”,”October”,”November”,”December”)

Met de formule TEXT() kun je ook de namen uit een datum halen. Je krijgt dan de namen in de taal terug van de omgeving:

Weergeven van een weeknummer

Standaard is er niet zoals in Excel een functie die gebruikt kan worden om een weeknummer uit een datum te halen. De formule =INT(([Modified]-DATE(YEAR([Modified]),1,1))/7 lijkt te werken. Maar geeft geen weeknummer voor 1 januari. Als de week start op zondag kun je de formule gebruiken:

=If(Int(([Modified]-Date(Year([Modified]),1,1)+(TEXT(Weekday(Date(Year([Modified]),1,1)-1),”d”)))/7)=0,52,Int(([Modified]-Date(Year([Modified]),1,1)+(TEXT(Weekday(Date(Year([Modified]),1,1)-1),”d”)))/7))

Als de week op maandag start kun je de formule gebruiken:

=If(Int(([Modified]-Date(Year([Modified]),1,1)+(TEXT(Weekday(Date(Year([Modified]),1,1)-2),”d”)))/7)=0,53,Int(([Modified]-Date(Year([Modified]),1,1)+(TEXT(Weekday(Date(Year([Modified]),1,1)-2),”d”)))/7))

Deze formules heb ik in Excel gesimuleerd om het verschil visueel te maken.

 

 

Als je het weeknummer binnen de maand wilt aangeven kun je de formule gebruiken :

=TEXT([Modified],”mmmm”) & ” week ” & ((INT(([Modified]-DATE(YEAR([Modified]),1,1)+(TEXT(WEEKDAY(DATE(YEAR([Modified]),1,1)),”d”)))/7)+1)-(INT(((MONTH([Modified])&”/1/”&YEAR([Modified]))-DATE(YEAR((MONTH([Modified])&”/1/”&YEAR([Modified]))),1,1)+(TEXT(WEEKDAY(DATE(YEAR((MONTH([Modified])&”/1/”&YEAR([Modified]))),1,1)),”d”)))/7)+1)+1)

Het resultaat:

Combineren van kolommen en tekst

Met CONCATENATE() kun je een string maken waarin je tekst met kolommen combineert. De kolommen scheid je met een komma.  Door de functie LOWER() te gebruiken krijgt de string alleen kleine letters. Hieronder een voorbeeld van een email-adres dat samengevoegd is op basis van de andere kolommen. Handig wanneer een email-adres altijd een vaste opbouw heeft:

Om van een andere kolom een paar karakters over te nemen gebruik je de functies LEFT() en RIGHT(). In dit voorbeeld is dit gebruikt in een contactenlijst. Voor de lijst is een weergave gemaakt op basis van een calculated kolom die de eerste letter van de achternaam overneemt. In de weergave is de calculated kolom gegroepeerd en gesorteerd op alfabet.:

=LEFT([Last Name],1)

 

You Might Also Like

1 reactie

  • avatar
    Reply Ruud van Lierop 20 februari 2015 at 14:30

    Beste Sjoerd,

    Mooi ovezicht.

    Toch een klein vraagje.

    Zou je me kunnen aangeven wat de sharepoint formule moet zijn wanneer ik op basis van een datumveld (dd-mm-jjjj) de kalendermaand wil bepalen. Resultaat is dan (mm-jjjj).

    Kolom 1 Kolom 2
    15-03-2014 03-2014
    29-01-2015 01-2015
    22-02-2015 02-2015

    Deze zie ik er in jouw uitleg (en ook elders op internet) niet tussen staan.

    Hoop dat je me kan helpen.
    Alvast dank!
    Groet,
    Ruud van Lierop
    06-52088008

  • Plaats een reactie