Funktionen LET för att skapa egna parametrar
I följande exempel skall vi ta reda på sista vardagendagen i
en månad. Vi kommer bland annat att göra det med en nästlad OM-formel som vi
skall korta ned med formeln LET() eftersom den formeln tillåter oss att skapa
egna parametrar.
Vi kommer även att använda formlerna SLUTMÅNAD() som tar
fram det sista datumet för en given månad. Vi kommer även att använda formeln
VECKODAG() för att ta reda på vilken veckodag det sista datumet i en månad är.
Formeln VECKODAG() returnerar en siffra där 1 står för måndag och 7 står för
söndag. Om det sista datumet i en månad är en söndag får vi resultatet 7. Vi
behöver då subtrahera 2 dagar från det datumet för att få fram en fredag (5) som
då blir månadens sista vardag. Då sista datumet en månad är en lördag (6) subtraherar
vi 1 dag för att få fram månadens sista vardag. Är det sista datumet en månad
inte en helgdag så låter vi det datumet vara.
Vårt resultat ser ut som i tabellen nedan. Du kan ladda ner exempelfil under inläggets rubrik.
I kolumn A har vi först ett startdatum i A2 under den så bygger vi vår SLUTMÅNAD() funktion som använder sig av siffrorna i kolumn B för antalet månader som skall läggas till ifrån startdatumet i A2. Formeln blir:
A3: =SLUTMÅNAD($A$2;B3)
I kolumn C redovisas veckodags numret i kolumn A med formeln:
C2: =VECKODAG(A2;2) –> (Vi använder oss av inställningen med en 2:a för att den skall räkna med måndag=1 och söndag=7.)
I kolumn D och E har vi Sista arbetsdag 1 och Sista
arbetsdag 2. Dessa två formler räknar ut samma sak på samma sätt med en
nästlad OM-formel fast med två olika tekniker. Den första använder sig av en
vanlig allt-i-en-formel och den andra använder sig av formeln LET().
Den första blir:
Sista arbetsdag 1 (D2):
=OM(VECKODAG(SLUTMÅNAD($A$2;B2);2)=7;
SLUTMÅNAD($A$2;B2)-2;
OM(VECKODAG(SLUTMÅNAD($A$2;B2);2)=6;
SLUTMÅNAD($A$2;B2)-1;
SLUTMÅNAD($A$2;B2)))
Sista arbetsdag 2 (E2):
=LET(
Slutmånad;SLUTMÅNAD($A$2;B2);
Veckodag;VECKODAG(Slutmånad;2);
OM(Veckodag=7;
Slutmånad-2;
OM(Veckodag=6;
Slutmånad-1;
Slutmånad)))
Den andra versionen där vi använder oss av formeln LET()
blir enklare att överskåda och även att skapa framförallt då vi har långa
formler.
Det första vi gör med formeln LET() är att först skapa våra parametrar. Definiera ett namn1 och sedan följt av ett namnvärde1. Därefter skapar vi en beräkning_eller_namn2, följt av ett valfritt namnvärde2. Sedan kan vi fortsätta så med beräkning_eller_namn3, 4 osv.
Vad vi gjort är följande:
namn1: Slutmånad
namnvärde1: SLUTMÅNAD($A$2;B2)
beräkning_eller_namn2: Veckodag
namnvärde2: VECKODAG(Slutmånad;2)
beräkning_eller_namn3: OM(Veckodag=7;Slutmånad-2;OM(Veckodag=6;Slutmånad-1;Slutmånad))
Först definierar vi våra två parametrar Slutmånad och Veckodag. Notera att parametern Slutmånad
även används i beräkningen av Veckodag. De är förtydligade i rött och grönt. Sedan i den
sista raden beräkning_eller_namn3 har vi den nästlade OM-formeln som
motsvarar hela uttrycket i Sista arbetsdag 1.
När vi använder formeln LET() så kan vi skapa våra egna parametrar som vi sedan kan använda i vår beräkning. Det blir på så sätt mycket enklare att skriva komplicerade långa formler. Det är betydligt enklare att förstå LET-formelns nästlade OM-formel jämfört med den klassiska.
OM(Veckodag=7;Slutmånad-2;OM(Veckodag=6;Slutmånad-1;Slutmånad))
Vilket även motsvarar:
OM(VECKODAG(SLUTMÅNAD($A$2;B2);2)=7;SLUTMÅNAD($A$2;B2)-2;OM(VECKODAG(SLUTMÅNAD($A$2;B2);2)=6;SLUTMÅNAD($A$2;B2)-1;SLUTMÅNAD($A$2;B2)))
Till exempel blir de här uttrycken nedan som motsvarar varandra väldigt mycket enklare att läsa när man skriver formeln LET().
Veckodag = VECKODAG(SLUTMÅNAD($A$2;B2);2)
Det blir även mer lättläst eftersom uttrycket SLUTMÅNAD($A$2;B2) används i ett annat syfte så det blir väldigt svårt att hålla isär de två uttrycken.