startsida < företaget < organisera < datorer < tips
 
Villkorsstyrd kalkylering

 
  Kalkylering
Kalkylering I
Kalkylering II
Kalkylering III
Kalkylering IV
Kalkylering V
Kalkylering VI
Kalkylering VII
Villkorsstyrd
kalkylering
Villkorsstyrd
formatering I
Villkorsstyrd
formatering II
Felhanterings-
kalkylering
Matriskalkylering I
Matriskalkylering II
Matriskalkylering III
Matriskalkylering IV
Matriskalkylering V
Datumkalkylering I
Datumkalkylering II
Datumkalkylering III
Datavalidering I
Datavalidering II
Cirkelreferenser
   
  Innehåll
expowera

 

Materialet publicerat med tillstånd från Dennis Wallentin.

Om villkorsstyrd kalkylering
Med villkorsstyrd (händelsestyrd) kalkylering menas att man överlåter till XL att utvärdera om ett eller flera villkor är SANT eller FALSKT. Beroende på utfallet kan man låta respektive utfall innebära skilda aktiviteter. Grunden för detta är den s k OM-funktionen och är (för mig) den mest kraftfulla enskilda funktionen XL erbjuder. I nedanstående tabell exemplifieras OM-funktionen.

I det första exemplet utför XL ett logiskt test huruvida värdet i cellen A2 är mindre eller lika med 50. Om påståendet är SANT så utförs multiplikationen. Om det är FALSKT så lämnas cellen tom. Det andra exemplet ger samma resultat som det första men påståendet skiljer sig åt (det är spegelvänt).

I det tredje exemplet används ytterligare en logisk funktion, ELLER-funktionen. Tolkningen av uttrycket är att om A4>10 ELLER B4<5 så visa uttrycket "Sant", dvs antingen är båda villkoren sanna eller så är ett utav dem för att visa uttrycket "Sant".

I det fjärde exemplet används också OCH-funktionen. Villkoret här är att båda påståenden måste vara sanna för att visa uttrycket "Sant.

I det sista exemplet används en ytterligare annan logisk funktion, ICKE-funktionen. Den kan vara svår att förstå. I exemplet erhålls värdet "Falskt" om A6 > 10, dvs påståendet är ICKE-sant!

Nästlade OM-funktioner
Att "nästla" är att låta ytterligare OM-satser vara utfallet för SANT eller FALSKT i en OM-sats. I en och samma cell kan man nästla upp till 7 st OM-funktioner (dock finns det möjlighet att gå runt denna begränsning men det tas inte upp här).

Antag att det finns en cell vars värde ska multipliceras med ett annat värde. Beroende på cellvärdet ska värdet multipliceras med skilda procentsatser. Antalet procentsatser uppgår till 4 st, 10 %, 15 %, 20 % och 25%. Cellvärdet kan anta värdena 2, 3 ,4, och 5.

  • =OM(A2=2;A2*10%;OM(A2=3;A2*15%;OM(A2=
    4;A2*20%;OM(A2=5;A2*25%;""))))

 

Om det första påståendet är falskt så sker nästa utvärdering o s v. Om påståendet är sant så sker en multiplikation. Annorlunda uttryckt så har vi här skapat ett beslutsträd.

Även andra funktioner kan användas tillsammans med nästlade OM-funktioner:

  • =OM(VÄNSTER(A9;1)="A";"Avd "&HÖGER(A9;1);OM
    (VÄNSTER(A9;1)="B";"Aktivitet "&HÖGER(A9;1)))

Beroende på om cellvärdet initialt börjar på "A" eller "B" så klassificeras utfallet som "Avd" + avdelningsnummer eller som "Aktivitet" + aktivitetsnummer.

En ytterligare demonstrator belyser hur OM-satsen kan kombineras med VÄLJ-funktionen:

  • =B1*OM(B8="R";VÄLJ(B9;14;13;11);VÄLJ(B9;11;9;7))

Den mest komplexa formel jag har behövt ta fram är nedanstående formel, vilken också inkluderar hantering av felmeddelanden:

  • =OM(ÄRFEL(OM(Utfall_SMHI=0;"";OM(Utförd_B_kvant>
    Ny_B_kvant;75%*(Utförd_B_kvant-Ny_B_kvant)*A_pris__kr;
    OM((Utförd_B_kvant-Ny_B_kvant)<0;25%*-(Utförd_B_kvant-Ny_B_kvant)
    *A_pris__kr;25%*(Utförd_B_kvant-Ny_B_kvant)*A_pris__kr))));"";
    OM(Utfall_SMHI=0;"";OM(Utförd_B_kvant>Ny_B_kvant;75%*
    (Utförd_B_kvant-Ny_B_kvant)*A_pris__kr;OM((Utförd_B_kvant-
    Ny_B_kvant)<0;25%*-(Utförd_B_kvant-Ny_B_kvant)*A_pris__kr;25%*
    (Utförd_B_kvant-Ny_B_kvant) *A_pris__kr))))

Villkorsstyrt medelvärde
Här används en kombination av SUMMA.OM-funktionen och ANTAL.OM-funktionen. I tabellen nedan visas ett exempel på hur dessa funktioner används för att räkna fram ett villkorsstyrt medelvärde.

Resultatet av SUMMA.OM-funktionen är för A-enheter 250. ANTAL.OM- funktionen ger resultatet 2 och medelvärdet blir följaktligen 125 (250 / 2).

Flera villkor!
Enligt direkt-hjälpen så är antalet villkor begränsade till ett för såväl SUMMA.OM som ANTAL.OM. Men det finns en odokumenterad syntax som gör att antalet villkor kan utökas till två stycken!. Tabellen nedan visar exempel på detta.

I det första exemplet så utförs summering om värdena i listan dels understiger 25 och dels överstiger 75, dvs två villkor. Villkoren innesluts av matrisklammrar, vilka man manuellt måste ange när formeln matas in.

I det andra exemplet så räknas antal förekomster om värdena i listan dels understiger 25 och dels överstiger 75, dvs även här finns två villkor som ska uppfyllas för att beräkning ska ske.

Summering i datumintervall
Här presenteras en teknik för summering inom ett önskat datumintervall.

Tabellen nedan visar förutsättningarna:


Formeln för att erhålla summan för den önskade datumperioden ser ut på följande sätt:

  • =ABS(SUMMA.OM(A2:A7;"<="&D2;B2:B7)-
    SUMMA.OM(A2:A7;"<"&E2;B2:B7))

Att ABS-funktioner finns med förklaras av det faktum att summan av den andra SUMMA.OM-formeln vanligtvis överstiger den första, dvs negativa värden kan därmed uppstå vilket funktionen eliminerar.

Intervallvillkor
Här visas en formelteknisk enkel lösning på ett komplext problem.

Antag att vi ska utvärdera ett cellvärde enligt följande:

<100 Visa värdet 0
>99 och <150 Visa värdet 1
>149 och <200 Visa värdet 2
>199 och <250  Visa värdet 3

Bilden nedan visar dels listan och de rätta utfallen:

I kolumnen för "Utfall 1" används följande villkorssformel:

  • =OM(A2<100;0;HELTAL(A2/50)-1)

I kolumnen för "Utfall 2" används t o m en kortare formel:

  • =MAX(HELTAL(A2/50)-1;0)

Med denna struktur så går det att utöka villkoren nästan till oändlighet.

Fler villkor än 7?
Ett av de problem vi ofta stöter på när vi arbetar med villkor och i synnerhet vid nästlade villkor är att den inbyggda begränsningen om 7 villkor lägger hinder för våra tilltänkta lösningar.

De alternativa lösningar som finns till buds är att använda sig av en letaupp- tabell eller använda oss av en relativ komplex lösning baserad på namn.

Men det finns faktiskt ett ytterligare sätt att kringgå denna begränsning och det visar detta tips!

Förutsättningarna för exemplet är att vi har följande villkor:

Villkor

Värde om villkoret uppfylls

A2=AA

10

A2=BB

20

A2=CC

30

A2=DD

40

A2=EE

50

A2=FF

60

A2=GG

70

A2=HH

80

A2=II

90

A2=JJ

100


Här har vi 10 villkor och bilden nedan visar exemplet i sin helhet

För att kunna utvärdera fler villkor än 7 används följande långa formel:

  • =OM(A2="AA";10;"")&OM(A2="BB";20;"")&OM(A2="CC";30;"")&
    OM(A2="DD";40;"")&OM(A2="EE";50;"")&OM(A2="FF";60;"")
    &OM(A2="GG";70;"")&OM(A2="HH";80;"")&OM(A2="II";90;"")
    &OM(A2="JJ";100;"")

Lösningen ligger i att bygga upp en OM-funktion och sedan koppla på ytterligare OM-funktioner genom att sammanfoga (&) formlerna.

Dock måste vi vara medvetna om att det erhållna värdet är ett textvärde, dvs det går inte att räkna med. Det i sin tur är enkelt att lösa genom att multiplicera ovanstående formel med 1, dvs 1*(formel).

Slutsatsen är att vi kan:

  • Utöka till nästan hur många villkor som helst
     
  • Utveckla formel ytterligare genom t ex
    =OM(OCH(A2="AA";B2=1);10;"")&
    =OM(ELLER(A2="AA";A2="BB";10;"")&
    =OM(ICKE(A2="BB");10;"")&
Upp
Senast uppdaterad: 2005-10-05 © Dennis Wallentin