Det finnes flere funksjoner for uttrekk av deler av tekst i Excel. Dette er funksjoner som kan brukes til å systematisere data i tabeller, der det unike feltet for data er komplekse tekstkoder. Det er for eksempel tilfelle med Nasdaq OMX sine koder for strømpriser. Nasdaq har ulike produktserier der alle kodene representerer følgende (en systempris-kontrakt, en CfD-kontrakt):
Kode | Produktgruppe | Produkt | Periode | Periode-ID | År |
---|---|---|---|---|---|
ENOQ3-14 | ENO=Systempris | Q=Kvartal | 3=3.kvartal | 14=2014 | |
SYHELYR-14 | SY=CfD | HEL=Helsinki | YR=År | 14=2014 |
Ved å bruke tekst-funksjoner i Excel kan det relevante trekkes ut fra kodene (Kode = ENOQ3-14 ligger i celle A1 i et regneark):
Formel | Syntaks | Resultat |
---|---|---|
LEFT() Antall tegn fra venstre | Celle;Antall tegn =LEFT(A1;3) | ENO |
RIGHT() Antall tegn fra høyre | Celle;Antall tegn =RIGHT(A1;2) | 14 |
MID() Antall tegn midt i | Celle;Antall tegn fra venstre;Antall tegn =MID(A1;4;2) | Q3 |
LEN() Antall tegn i en tekstreng | Celle =LEN(A1) | 8 |
Problemet med disse kodene i systematisering av data, for eksempel langs en tidsakse, er at de verken er like lange eller systematisert på samme måte. Løsningen på dette er en kombinasjon av if-setninger og uttrekk av deler av teksten.
Det som er ønskelig å få ut av kodene er følgende (Data i kolonne A, uttrekk i kolonne B-E):
- Hvilken produktgruppe er det?
- Hvor lang er perioden?
- Hvilken periode er det?
- Hvilket år er det?
Formel | Kommentar | |
---|---|---|
Produktgruppe | IF(LEFT(A4;3)=»ENO»;»System»;IF(LEFT(A4;2)=»SY»;»CfD»;0)) | Forteller hvorvidt dette er en Systempris-kontrakt eller en CfD-kontrakt |
Periodelengde | IF(B4=»System»;MID(A4;4;1);IF(B4=»CfD»;IF(OR(MID(A4;6;1)=»Q»;MID(A4;6;1)=»Y»);MID(A4;6;1);»M»))) | Forteller hvilken periodelengde kontrakten har,. Merk at systematikken er ulik for System- og CfD-kontrakter og dermed må det gjøres en IF-test på hvorvidt dette er den ene eller den andre kontraktstypen. |
Periode | IF(B4=»System»;IF(C4=»M»;MID(A4;5;3);MID(A4;4;2));IF(B4=»CfD»;IF(C4=»M»;MID(A4;6;3);MID(A4;6;2)))) | Forteller hvorvidt dette er en måned-, kvartal- eller årskontrakt. Igjen er systematikken ulik basert på om dette er en system- eller DfD-kontrakt |
År | RIGHT(A4;2)+2000 | Forteller hvilket år dette er. 2000 er lagt til ettersom perioden angis med 2 tegn i koden |
Resultatet av en lang rekke lignende koder blir som følger:
Contract | Group | Lenght | Period | Year | # char |
---|---|---|---|---|---|
ENOMJUN-13 | System | M | JUN | 2013 | 10 |
ENOQ1-14 | System | Q | Q1 | 2014 | 8 |
ENOQ2-14 | System | Q | Q2 | 2014 | 8 |
ENOQ3-13 | System | Q | Q3 | 2013 | 8 |
ENOQ4-14 | System | Q | Q4 | 2014 | 8 |
ENOYR-14 | System | Y | YR | 2014 | 8 |
SYOSLMAY-13 | CfD | M | MAY | 2013 | 11 |
SYOSLQ3-13 | CfD | Q | Q3 | 2013 | 10 |
SYOSLYR-14 | CfD | Y | YR | 2014 | 10 |
Dermed har du en tabell der kodene kan sorteres langs en tidsakse.