Yearly Archives: 2013

Joustavuutta EPÄSUORA (INDIRECT) – funktiolla.

EPÄSUORA (INDIRECT) -funktio palauttaa merkkijonon viittauksen.
Esimerkiksi:

=EPÄSUORA(A1) palauttaa B1:ssä olevan arvon 100

EPÄSUORA –funktion käyttö kelpoisuustarkistuksen (Data Validation) kanssa.
Alla oleva esimerkki toimii seuraavasti:

Kun valitset F1:ssä tuoteryhmän niin G1:ssä näytetään lista sen tuoteryhmän tuotteista.
Käytetyt määrittelyt:
A-sarakkeeseen on määritelty nimi ”Ryhmät”
B, C, ja D – sarakkeisiin on määritelty ryhmien nimet ja niiden sisällöt. Eli Vihannekset B-sarakkeeseen, hedelmät C-sarakkeeseen jne. Nimet ovat samoja kun A-sarakkeen ryhmänimet.
F1 soluun on laitettu Kelpoisuustarkistus johon on määritelty Luettelo ja sen lähteeksi A-sarakkeen nimi (Ryhmät).
G1 sarakkeeseen on myös laitettu kelpoisuustarkistus ja Luettelo mutta lähteeksi on laitettu funktio EPÄSUORA joka viittaa soluun F1.

Esimerkki funktion käytöstä

Esimerkki funktion käytöstä

Satunnaispoiminta

Lisää taulukkoosi uusi sarake ja sille otsikko

Kirjoita kaava =SATUNNAISLUKU() (RAND()) otsikon alapuolella olevaan soluun

Kopioi kaava sarakkeessa aina viimeiselle riville asti

Lajittele taulukkosi tämän sarakkeen mukaan

 

Lajittele uudestaan kun haluat uuden tuloksen.

Excel laskee joka kerta uudet satunnaisluvut ja saat uuden lopputuloksen

 

Kopioi haluamasi rivimäärä talteen analyysejäsi varten.

 

 

Eri sivunumero asiakirjan eri osiin

 

Esimerkkinä toimikoon asiakirja, jossa on kansisivu, sisällysluettelo ja varsinainen sisältö.

Kansisivussa ei saa olla sivunumeroa. Sisällysluettelossa sivunumerot ovat muotoa i, ii, iii ja niin edelleen.

Varsinaisen asiakirjan sisällön sivunumerointi alkaa 1:stä.

Avain onnistumiseen on asiakirjan jako osiin. Toiminto sijaitsee valintanauhassa Sivun asettelu (Page Layout) ja ryhmässä Sivun asetukset (Page Setup).

Toiminto on nimeltään Vaihdot (Breaks) ja sen alta avautuvasta valikosta Osanvaihdot (Section Breaks).

Eli:

Kirjoita kansisivu ja valitse Sivun asettelu/ Sivun asetukset, Vaihdot – Seuraava sivu (Page Layout/Page Setup, Breaks – Next Page).

Laita esim. sisällysluettelon otsikko paikalleen ja paina Enteriä.

Valitse Sivun asettelu/ Sivun asetukset, Vaihdot – Seuraava sivu.

Kirjoita asiakirjan varsinainen teksti.

Siirry sisällysluettelo-sivulle ja lisää sisällysluettelo (Viittaukset, Sisällysluettelo – Sisällysluettelo (Refernces, Table of Contents – Table of Contens)

Siirry sisällysluettelon ylätunnisteeseen, esim. kaksoisnapsauttamalla asianomaista kohtaa.

Poista Linkki edelliseen (Link to Previous) napsauttamalla ao. toimintoa Ylä- ja alatunnistetyökalujen valintanauhan Rakenne (Design) ryhmässä Siirtyminen (Navigation).

Laita kohdistin kohtaan johon haluat sivunumeron ja valitse Sivunumero, Nykyinen sijainti, Normaali numero (Ryhmässä Ylä- alatunniste) (Header & Footer, Page Number, Current Position, Plain Number).

Valitse näin lisätty sivunumero ja valitse Sivunumero, Muotoile sivunumero (Fotmat Page Numbers).

Valintaikkunassa valitse haluttu lukumuotoilu ja Aloittava numero (numero, mistä sivunumerointi alkaa).

Siirry varsinaisen tekstin ylätunnisteeseen.

Poista Linkki edelliseen (Link to Previous) napsauttamalla ao. toimintoa: Ylä- ja alatunnistetyökalut, Rakenne, Siirtyminen ryhmässä (Header & Footer Tools, Design, Navigation).

Valitse sivunumero ja valitse Sivunumero, Muotoile sivunumero (Page Number, Format Page Numbers).

Valintaikkunassa valitse haluttu lukumuotoilu ja Aloittava numero (numero, mistä sivunumerointi alkaa).

 

Samalla tavalla voit luoda omat ylätunnisteet esimerkiksi lähdeluettelosivuille, kuvaluetteloille ja niin edelleen.

Linkki artikkeliin sivunumeroista

Infoa käyttäjää ohjelman edistymisestä

Kolme esimerkkiä informoida käyttäjää miten ohjelma edistyy.
Kahdessa ensimmäisessä käytän tilariviä (StatusBar) ja kolmannessa käytän valintaikkunaa.

Koodi lukee soluja ja kertoo kuinka ohjelma edistyy.
Tilarivillä voit esittää esim. laskurilla tai tekstillä missä mennään.

Application.StausBar = ”Teksti tai luku jota näytetään”

Tilarivin tyhjennät seuraavalla tavalla:

Application.StausBar = ””

Mikäli et tyhjennä tilariviä jää merkintä siihen kunnes tilariviä päivitetään uudelleen tai kun Excel käynnistetään uudestaan.

 Esimerkki 1

Tilarivillä kerrotaan laskurilla i, monesko solu menossa.

Sub NaytaEdistyminen()
    Dim i As Long                  'laskuri
    Dim s As Range                 'solu jota käsitellään
    Range(Selection, Selection.End(xlDown)).Select
    i = 1
    For Each s In Selection
        Application.StatusBar = i  'tilarivi kertoo laskurin avulla monennetta solua luetaan
       i = i + 1
        'Laita oma koodisi tähän
    Next
    Application.StatusBar = ""      'tilarivi tyhjennetään
End Sub

Esimerkki 2

Tilarivillä kerrotaan kuinka monta prosenttia on käsitelty.
Muuttuja i kertoo mitä rivi käsitellään ja muuttuja j kuinka monta riviä on alueessa. Kuinka monta prosenttia on luettu saadaan kaavalla i/j muotoiltuna prosentiksi.

Sub NaytaEdistyminen2()
    Dim i As Long        'laskuri
    Dim j As Long        'muuttuja joka sisältää alueen kokonaisrivimäärän
    Dim s As Range
    Range(Selection, Selection.End(xlDown)).Select
    j = Selection.Rows.Count       'lasketaan alueen rivit
    i = 1
    For Each s In Selection
        'lasketaan prosenteissa kuinka paljon tehty
        Application.StatusBar = Format(i / j, "0.00%") 
        i = i + 1
        'Laita oma koodisi tähän
    Next
    Application.StatusBar = ""      'tilarivi tyhjennetään
End Sub

Esimerkki 3

Käytetään lomaketta jossa kerrotaan missä mennään. Se voidaan asettaa keskelle näyttöä jolloin se varmasti huomataan.
Koodi on kuten esimerkissä kaksi paisti että edistymisen näyttämiseksi käytetään lomaketta.
Lokmake on Form joka on määritelty ei modaaliseksi (ShowModal = False). Lomakkeen nimeksi on annettu FrmEdistyminen.
Lisäksi lomakkeelle on määritelty kaksi Label –objeltia, yksi johon laitettu teksti ”Luetteu” ja toinen joka on nimetty lblNayta ja jota ohjelma päivittää.

Objektien fonttikokoa on myös laitettu isommaksi.

Sub NaytaEdistyminen3()
    Dim i As Long
    Dim j As Long
    Dim s As Range
    Range(Selection, Selection.End(xlDown)).Select
    j = Selection.Rows.Count
    i = 1
    FrmEdistyminen.Show      'tuodaan lomake näyttöön
    For Each s In Selection
                  'lomakkeen objektia (lblNayta) päivitetään
        FrmEdistyminen.lblNayta.Caption = Format(i / j, "0.00%") 
        i = i + 1
    Next
    Unload FrmEdistyminen    'suljetaan lomake ja poistetaan muistista
End Sub

Lomakkeen asetukset kuvana

Lomakkeen asetukset

Lomakkeen asetukset

 

PowerPivot päivitys

Automaattinen Pivot ja PowerPivot päivitys toimii Excel versiossa 2013.

Excel versioon 2013 on lisätty ominaisuus jolla päivitys voidaan hoitaa automaattisesti.

Jos se halutaan tehdä normaalissa moduulissa, lisätään seuraava koodirivi makroon:

ActiveWorkbook.Model.Refresh

Jos päivitys halutaan taas tehdä kun työkirja avataan se lisätään ThisWorkbook kohtaan Sub_ Workbook_Open:

Private Sub Workbook_Open()
     Me.Model.Refresh
End Sub

PowerPivot päivitys

Automaattinen Pivot ja PowerPivot päivitys toimii Excel versiossa 2013.

Excel versioon 2013 on lisätty ominaisuus jolla päivitys voidaan hoitaa automaattisesti.

Jos se halutaan tehdä normaalissa moduulissa, lisätään seuraava koodirivi makroon:

ActiveWorkbook.Model.Refresh

Jos päivitys halutaan taas tehdä kun työkirja avataan se lisätään ThisWorkbook kohtaan Sub_ Workbook_Open:

Private Sub Workbook_Open()
     Me.Model.Refresh
End Sub

Tyhjien solujen täyttö

Saat listan joka on suunnilleen alla olevan näköinen:

A

B

C

D

1 Alue Ryhmä Nimike Arvo
2 Suomi Helsinki Tuote 1

10

3 Tuote 2

15

4 Tuote 3

10

5 Turku Tuote 1

20

6 Tuote 2

25

7 Ruotsi Tukholma Tuote 2

30

8 Tuote 3

35

9 Tuote 4

30

Tästä halutaan tehdä yhteenveto Pivotilla mutta ensin on täytettävä sarakkeen A ja B tyhjät solut jotta se onnistuisi.

Lopputulos tulisi olla seuraavan lainen:

A

B

C

D

1 Alue Ryhmä Nimike Arvo
2 Suomi Helsinki Tuote 1

10

3 Suomi Helsinki Tuote 2

15

4 Suomi Helsinki Tuote 3

10

5 Suomi Turku Tuote 1

20

6 Suomi Turku Tuote 2

25

7 Ruotsi Tukholma Tuote 2

30

8 Ruotsi Tukholma Tuote 3

35

9 Ruotsi Tukholma Tuote 4

30

Tämä tehdään esimerkiksi seuraavalla tavalla:

  1. Valitaan sarake A ja B
  2. Valitaan Aloitus – Muokkaa – Etsi ja Korvaa, Siirry määräten (Home – Editing – Find & Select, Go To Special).
  3. Avautuvasta valintaikkunasta valitse vaihtoehto Tyhjät (Blanks) vasemmassa sarakkeessa ja napsauta OK. (Kaikki sarakkeen A ja B tyhjät solut ovat valittuna)
  4. Kirjoita kaava = ja paina nuoli ylöspäin. Esim. jos aktiivinen solu on B3 niin kaavaksi tulee =B2.
    Huomaa suhteellinen viittaus)
  5. Paina Ctrl + Enter (paina ensin Ctrl – näppäin alas ja tämän jälkeen painat Enter).
    Kaava kirjoitetaan kaikkiin tyhjiin valittuihin soluihin.

Solujen viittaukset

Kun kaavaa kopioidaan on viittaustavoilla merkitystä.

Yleensä kaavoissa on suhteelliset viittaukset (A1, B1 jne.), eli solujen osoitteet muuttuvat sitä mukaan kun kaavaa kopioidaan ja viittaukset pysyvät samassa suhteessa soluun jossa on kaava.

Heti kun lähdetään laskemaan esim. prosenttiosuuksia tai muuttamaan jotakin lukua kertoimella joka on aina samassa solussa, ja kaavaa halutaan kopioida, tulee eteen tarve muuttaa viittaustapaa esim. suoraksi ($A$1, $B$1 jne.).

Tämä muutos tehdään kätevämmin painamalla funktionäppäintä F4.

Eli kun kaavaa kirjoitetaan ja osoitin vilkkuu viittauksen perässä painetaan F4 viittaustavan muuttamiseksi. Kun painetaan toistuvasti F4:sta Excel muuttaa joka kerta viittaustapaa:

Ensimmäisen kerran F4:sta -> $A$1 (lukitaan koko solu)
Toisen kerran -> A$1 (lukitaan rivi)
Kolmannen kerran -> $A1 (lukitaan sarake)
Neljännen kerran -> A1 (suhteellinen)

Jos kaava on jo valmiina voit asettaa osoittimen sen viittauksen sisään tai heti perään jonka viittaustapaa haluat muuttaa ja painaa F4:sta.

Jos on useampi viittaus kaavassa, esim. alue jonka haluat “lukita” voit valita ne viittaukset kaavassa (maalata) ja sitten painaa F4:sta.

Esim.:

A

B

C

D

E

F

1

Sar 1

Sar 2

Yhteensä
Alue

Yhteensä yksittäiset solut

% osuus totaalista

2

Nimike 1

10

20

=SUMMA(B2:C2)

=B2+C2

=E2/$E$4*100

3

Nimike 2

15

25

40

40

57,14

4

Totaali

25

45

70

70

100,00

 

Kaavat sarakkeissa D, E ja F voidaan kopioida alas. Sarakkeessa F solu E4 on lukittu koska se on yhteinen kaikille kaavoilla asianomaisessa sarakkeessa. Jos viittausta ei lukittaisi jouduttaisiin kaava kirjoittamaan uusiksi joka riville.

Sarakkeiden D ja E kaavat eivät ole lukittuja koska siinä viittaus on aina muututtava vastaamaan asianomaista riviä, eli kaavasolua nähden viitataan aina samalla tavalla.

 

 

Tietojen ryhmittelyä

Tässä kun Pivot- ja PowerPivot kurssia valmistelen tuli taas esiin kysymys tietojen ryhmittelystä ryhmiin, ryhmiin joita ei ole lähdetiedoissa.

Alla kaksi eri esimerkkiä miten sen voisi ratkaista.

Esimerkissäni käytän Accessin Northwind-esimerkki kannasta ottamaani dataa.

Esimerkkidata

Esimerkkidata

Pivot esimerkki:

Haluan laskea myynnin maantieteellisesti jaettuna. Lähdetiedoissa on vain maiden nimet joten joutuisin tämän tekemään manuaalisesti pivotissa joka on hankalaa.

Eräs kiertotapa on että poimin kaikki yksilölliset maat eri tauluun ja laitan siihen mihin maantieteelliseen alueeseen ao. maa kuuluu.

Tietysti voin tämän tehdä suoraan lähdetietoonkin mutta tuhansien rivien päivitys manuaalisesti on hankalaa.

Joten poimin lähteestä yksilölliset maat seuraavasti:

1. Valitsen B-sarakkeen
2. Tiedot, Lajittele ja suodata, Lisäasetukset – Vain ainutkertaiset tiedot (Data, Sort & Filter, Advanced – Unique records only)
3. Kopioin tuloksen ja liitän sen uuteen taulukkoon
(Olisin kyllä voinut lähteä liikkeelle uudesta taulukosta ja erikoissuodatuksella saada sinne kaikki yksilölliset maat mutta tällä kertaa teen sen näin)
4. Määrittelen mihin alueeseen kukin maa kuuluu (manuaalisesti) uuden taulukon B -sarake.

Ryhmät

Ryhmät

5. Tämän jälkeen siirryn lähdetietoon ja luon sinne uuden sarakkeen PHAKU (VLOOKUP) kaavalla joka poimii luomastani uudesta taulusta ryhmän.

H-sarakkeen kaava: =PHAKU(B2;Groups!A:B;2;EPÄTOSI), (=VLOOKUP(B2;Groups!A:B;2;FALSE))

Jos taulu on määritelty Taulukoksi niin kaava kopioituu automaattisesti kaikille riveille.

Valmis data

Valmis data

Nyt voin ryhmitellä pivotissani tiedot tämän ryhmän mukaan.

 PowerPivot esimerkki:

Kopioin yksilölliset maat omaksi tauluksi PowerPivottiin ja lisäsin varisainaiseen tauluun uuden sarakkeen johon laitoin kaavan:

=LOOKUPVALUE(Ryhmat[Ryhmä];Ryhmat[Country];[Country])
(Ryhmat on uusi taulu jonka loin)

PowerPivot esimerkki

PowerPivot esimerkki

Kaava etsii maan luomastani taulusta ja palauttaa ryhmän johon ao. maa kuluu.
Funktion LOOKUPVALUE syntaksi on:
LOOKUPVALUE( <result_columnName>, <search_columnName>, <search_value>[, <search_columnName>, <search_value>]…)
result_columnName = sarake josta arvo palautetaan
search_columnName = sarake josta hakuarvo etsitään
search_value = arvo jota etsitään

PowerPivotista saat yksilölliset rivit esimerkiksi viemällä ne pivot-taulukoksi ja sitten kopioi tuloksen takasin uuteen taulukkoon PowerPivottiin.

 

Oma valintanauha (ribbon)

Kerää usein käyttämäsi työkalut samaan valintanauhaan ja helpotat ohjelman käyttöä.

Voit luoda Office-ohjelmiin (versio 2010/13) kätevästi omia valintanauhoja seuraavasti:

Valitse Tiedosto/Asetukset (File/Options)

Valitse Muokkaa valintanauhaa (Customize Ribbon) (1).

Napsauta vasemman sarakkeen alaosassa olevaa painiketta Uusi välilehti (New Tab) (2)

Vasempaan sarakkeeseen ilmestyy “Uusi välilehti (Mukautettu) (New Tab (Custom)) ja sen alle “Uusi ryhmä (Mukautettu)” (New Group (Custom)) (3).

Voit muuttaa molempien nimeä valitsemalla kohdan ja napsauttamalla painiketta Nimeä uudelleen (Rename) (4).

Näiden toimenpiteiden jälkeen voit etsiä komentoja oikeanpuoleisesta sarakkeesta ja lisätä niitä luomaasi välilehden ryhmään joko hiirellä raahaamalla tai valitsemalla ja napsuttamalla painiketta Lisää (Add) (5).

Oikean puoleiseen sarakkeeseen saat valittua näkyviin (suodatettua) jonkun tietyn välilehden komennot tai kaikki komennot. Voit tällä tavalla helpottaa komentojen löytämistä (6).

Huomaa että saat näkyviin myös niitä komentoja joita ei ole valintanauhoissa.

Voit siirtää luomasi valintanauhan paikkaa hiirellä raahaamalla kohtaan jonne sen haluat.

Komentopainikkeita saat pois valitsemalla asianomainen komento ja napsauta Poista (Remove).

Asetukset tallentuvat koneellesi sinun profiiliisi.

Tällä tavalla voit luoda ja muokata valintanauhoja kaikissa Office-ohjelmissa.

Valintanauhan muokkaus

Valintanauhan muokkaus

Kahden listan vertailu

Verrataan kahta listaa keskenään ja poimitaan toisesta listasta tietoja ensimmäiseen.
Tähän on kätevä käyttää funktiota PHAKU (VLOOKUP).
Esimerkissä poimitaan henkilön palkka palkat.xlsx –työkirjasta.
Kaava solussa C2 on =PHAKU(A2;[Palkat.xlsx]Palkkaus!$A:$C;3;EPÄTOSI).
=VLOOKUP(A2;[Palkat.xlsx]Palkkaus!$A:$C;3;FALSE)

PHAKU (VLOOKUP)

PHAKU (VLOOKUP)

Hakuarvo on tässä tapauksessa se arvo jonka perusteella toisesta taulukosta haetaan tietoja.
Taulukko_matriisi on se taulukko alue jonka vasemmanpuoleisesta sarakkeesta arvoa haetaan.
Sar_indeksi_nro on sen sarakkeen numero valitulla taulukkoalueella josta arvo poimitaan.
Alue_halu on epätosi koska halutaan löytää täsmällinen vastine.

Taulu josta haetaan tietoja kannattaa lajitella hakuarvon perusteella.

Mikäli tietoja ei toisesta taulusta löydy palauttaa funktio virhearvon #PUUTTUU! (#N/A).
Tämän saat pois seuraavalla tavalla kaavalla (Excel versiot 2007 ja uudemmat):
=JOSVIRHE(PHAKU(A2;[Palkat.xlsx]Palkkaus!$A:$C;3;EPÄTOSI);”Ei löydy”)
JOSVIRHE = IFERROR
EPÄTOSI = FALSE
Kaavan tekstin “Ei löydy” sijasta voit käyttää mitä tahansa haluamaasi tekstiä tai sitten “” jotta solu jäisi tyhjäksi.
=JOSVIRHE(PHAKU(A2;[Palkat.xlsx]Palkkaus!$A:$C;3;EPÄTOSI);””)

Jos käytössäsi on vanhempi Excel voit poistaa virhesanoman esimerkiksi seuraavanlaisella kaavalla:
=JOS(ONVIRHE(PHAKU(A3;[Palkat.xlsx]Palkkaus!$A:$C;3;EPÄTOSI));””;PHAKU(A3;[Palkat.xlsx]Palkkaus!$A:$C;3;EPÄTOSI)).
JOS = IF
ONVIRHE = ISERROR
Huomaa että tässä kaavassa haku suoritetaan kaksi kertaa joka tekee kaavasta hitaan.

Dynaamiset nimet 2

Dynaamisille asioille riittää paljon eri soveltuvuus aloja tässä yksi esimerkki lisää.

Valitaan listaruudusta osasto, tuote tai jokin muu ehto ja sen perusteella tuodaan lähdetiedoista tietoja.

Listaruudun tekoon käytän tässä esimerkissä toimintoa Tietojen kelpoisuuden tarkistaminen joka on Datatyökaluryhmässä Tiedot valintanauhalla. (Data,Data tools, Data Validation).

Esimerkki:

Esimerkki nimen käytöstä

Esimerkki nimen käytöstä

Esimerkissä olen laittanut kaikki valittavissa olevat maat omaan tauluun ja nimennyt sen parametrit.

Tämän jälkeen olen määrittänyt nimen Maat jonka viittaus on:
=SIIRTYMÄ(Parametrit!$A$1;1;0;LASKE.A(Parametrit!$A:$A)-1)

SIIRTYMÄ (OFFSET), LAKE.A (COUNTA)

Nimi määritellään kohdasta Kaavat, Määritetyt nimet, Määritä nimi (Formulas, Defined Names, Define Name).

Annetaan Nimi -ruutuun kuvaava nimi, Laajuus on työkirja ja viittaukseen yllä mainittu kaava.
Olen laittanut kaavaan -1 koska nimisarakkeessa on otsikko ja sitä en halua mukaan listaan.
Tämän jälkeen olen laittanut soluun B3 kelpoisuustarkistuksen joka näyttää luettelon.
Lähteeksi olen laittanut nimen jonka loin aiemmin.

Huomaa että lähteen luettelo alkaa = -merkillä.

Kelpoisuustarkistus

Kelpoisuustarkistus

Tämän jälkeen rakennetaan kaavat jotka hakee tai poimii tietoja valitun arvon mukaan.
Esimerkkiin olen laittanut esimerkinomaisesti seuraavat kaavat:
=LASKE.JOS(C11:C2165;B3) (COUNTIF)
=SUMMA.JOS(C11:C2165;B3;L11:L2165) (SUMIF)

Jos haluat poimia monta tietoa samasta lähteestä, samalta riviltä harkitse VASTINE (MATCH) ja INDEKSI (INDEX) funktioiden käyttöä PHAKU (VLOOKUP) funktion sijaan. Tämä on monesti tehokkaampaa.

Dynaaminen kaavio

Taas kerran jouduin tappelemaan dynaamisen kaavion kanssa ja laitan esimerkin nyt myös tähän.

Syy, miksi käytän dynaamista kaaviota, on esimerkiksi kun haluan kaaviokuvan jatkuvan automaattisesti, kun datasarjaan tulee uusia elementtejä.

Voihan sen myös tehdä kopioi-liitä menetelmällä, mutta kun on kiire ja tapahtuma on toistuva, haluaa mielellään jotakin “helpompaa”.

Dynaaminen kaaviokuva rakentuu datasarjoista, joille on annettu nimet. Nimet taas saadaan dynaamisiksi käyttäen funktioita SIIRTYMÄ (OFFSET) ja LASKE.A (COUNTA).

SIIRTYMÄ-funktion syntaksi on:
SIIRTYMÄ(viittaus; rivit; sarakkeet; [korkeus]; [leveys])

Kun olen määritellyt nimet, luon kaaviokuvan normaalilla tavalla.
Tämän jälkeen lähden muokkaamaan datasarjoja ja korvaan siinä olevat viittaukset luomillani nimillä.

=SARJA(Esimerkki!$A$2;kd_kaavio.xlsx!Kuukaudet;kd_kaavio.xlsx!Tuote_1;1)

Huomaa, että sinun on annettava datasarjassa koko työkirjan nimi, pelkkä datasarjan nimi ei riitä, vaikka nimen laajuudeksi on määritelty työkirja.

Alla oleva kuvassa on esitelty kaavio, työkirjassa olevat nimet ja kaaviokuvan sarja.

Dynaaminen kaavio määrityksineen

Dynaaminen kaavio

Nimen määrittely

Valitse Kaavat/Määritetyt nimet, Määritä nimi (Formulas/Defined name, Define name).
Anna nimi valintaikkunassa. Viittauskohtaan kirjoitat kaavan.

 

Määritä nimi

Määritä nimi

Kuvassa on kuukaudet-nimen määrittely.
=SIIRTYMÄ(Esimerkki!$A$1;0;1;;LASKE.A(Esimerkki!$1:$1))
SIIRTYMÄ(viittaus; rivit; sarakkeet; [korkeus]; [leveys])
viittaus = taulun nimi ja soluviittaus josta aloitetaan
rivit = 0 koska ollaan samalla rivillä kuin viittaus
sarakkeet = 1 koska kuukaudet alkaa viittauksesta nähden seuraavasta sarakkeesta
korkeus = ;; ei tarvita koska ollaan samalla rivillä
leveys = LASKE.A(Esimerkki!$1:$1), lasketaan rivin 1 täytetyt solut

Tuotenimet on määritelty vastaavasti:

=SIIRTYMÄ(Esimerkki!$A$2;0;1;;LASKE.A(Esimerkki!$2:$2)-1)
Huomaa nimen muoto: Tuote_1 koska nimissä ei saa olla välilyöntejä.
-1 kaavassa tarvitaan, koska tieto alkaa toisesta sarakkeesta, ensimmäisessä kun on riviotsikko.

Kun nimet on määritelty, valitsen kaaviokuvan datasarjan ja korvaan siinä olevat viittaukset luomillani nimillä.
Tässä työskentelen kaavarivillä, koska se on mielestäni helpointa näin.

=SARJA(Esimerkki!$A$2;kd_kaavio.xlsx!Kuukaudet;kd_kaavio.xlsx!Tuote_1;1)
Huomaa tosiaan työkirjan nimi: kd_kaavio.xlsx!

Kun työskentelet valintaikkunoissa, kuten tuo nimenmäärittelyikkuna, ja haluat siirtyä kirjoittamassasi kaavassa nuolinäppäimellä, paina ensin funktionäppäintä F2, muussa tapauksessa se onnistu.

 

Kuukauden lisäys ja solujen tyhjennys

Kuukauden lisäys

Taas kerran tarvitsin toiminnon jolla lisätään yksi kuukausi annettuun päivämäärään.
Ratkaisin sen omalla funktiolla “LisaaKuukausi”
VBA:ssa voit käyttää DateAdd komentoa päivämäärien laskentaan.

Oheisessa funktiossa syötän funktiolle päivämäärä johon lisätään kuukausi.
Funktiossa muotoillaan palautettava päivämäärä ja jotta se palautuisi muunlaisena kun päivän sarananumerona olen vielä määritellyt funktion palautustyypiksi variantin.
Kuukausi lisätään komennolla DateAdd(“m”, 1, pvm) jossa
m – kertoo että lisätään kuukausi
1 – kuinka monta kuukautta lisätään
pvm – funktiolle annettu argumentti

Tämä kaikki muotoillaan Format komennolla muotoon dd.mm.yyyy joka on sama kuin pp.kk.vvvv.

Function LisaaKuukausi(pvm As Date) As Variant

     LisaaKuukausi =  Format(DateAdd("m", 1, pvm), "dd.mm.yyyy")

End Function

Solujen tyhjennys

Tarvitsin myös toiminnon joka poistaa soluista kaiken muun paisti kaavat.
Ohessa proseduuri jota käytin.
Se ei ole täydellinen mutta toimi juuri siinä kun sitä tarvitsin.
Valitaan alue ja suoritetaan ohjelma.
Ohjelma tarkistaa jos solussa on kaava (HasFormula) ja jos ei ole niin solu tyhjennetään.

Sub PoistaSisalto()

Dim s As Range
For Each s In Selection
    If Not s.HasFormula Then
       s.ClearContents
    End If
Next
End Sub


Lisää esimerkit koodi-ikkunaan

Yllä olevat proseduurit voit lisätä työkirjan makroiksi esim. seuraavalla tavalla:
Kopioi esimerkin koodi

Valitse koodi
Paina Ctrl + c (kopioi)
Paina Alt+F11
Valitse Insert – Module
Paina Ctrl + v (liitä)

Tämän jälkeen löydät funktion työkirjassa kohdasta lisää funktio, luokka käyttäjän määrittämä (User defined)

SUB –proceduurin voit suorittaa esim. kohdasta Näytä (valintanauha), Makrot (ryhmä), Makrot, Näytä makrot. (View, Macros, Macros, Show Macros)

 

Sivunumerot

Sivunumero

  • Wordin sivunumeron lisäät ylä- alatunnisteeseeen kätevimmin kaksoisnapsauttamalla ylä- alatunnisteta.
  • Aseta kohdistin haluttuun kohtaan
  • Valitse Ylä- alatunnistetyökalujen Rakenne valintanauhasta Sivunumero, Nykyinen sijainti (Page number, Current position)

    Ylä- ja alatunniste valintanauha

    Ylä- ja alatunniste

Kokonaissivumäärä

Mikäli haluat laittaa asiakirjaan kokonaissivumäärän ylä- alatunnisteeseen, saat sen seuraavalla tavalla:

  • Mene kohtaan johon sen haluat
  • Valitse Pikaosat ja sen valikosta Kenttä (Quick parts, Field)
  • Valitse kenttäluettelosta kenttä NumPages.
Lisää kenttä valintaikkuna

Kentän lisäys

 

Osan sivujen määrä

Jos olet jakanut asiakirjasi osiin ja haluat osan sivumäärän, löydät sen Pikaosien kentistä nimellä  SectionPages.

Tiedon jako sarakkeisiin 2

Tiedon jako sarakkeisiin toimintoa voit myös hyödyntää esim. päivämäärän muokkaukseen.

Saat Exceliin päivämäärän joka on tekstiä ja esim. muodossa 20130315.

Muutetaan Excelin ymmärtämään päivämäärämuotoon:

  • Valitse solu, sarake tai alue jossa tämä päivämäärä esiintyy.
  • Sen jälkeen valitse Tiedot valintanauhan Datatyökaluryhmästä Teksti sarakkeisiin – toiminnon (Data/Data tools, Text to columns).
  • Vaiheessa kolme määrittele päivämäärän muoto.

P (D)=päivä, K (M)=kuukausi, V (Y)=Vuosi.

  • Esimerkissä valitaan muoto VKP (YMD)
  • Napsauta Valmis (Finish).
Tietotyypin valinta

Tietotyypin valinta

Esimerkin tyyppisestä merkkijonosta voidaan myös poimia tietoja funktioiden avulla.

Ohessa kolme käyttökelpoista funktiota:
VASEN (LEFT), poimii vasemmalta määritellyn määrän merkkejä
OIKEA (RIGHT) , poimii oikealta määritellyn määrän merkkejä
POIMI.TEKSTI (MID), poimii merkkijonon annetusta kohdasta ja määritellyn määrän merkkejä.

Syntaksi: POIMI.TEKSTI(teksti; aloitusnro; merkit_luku)

Esim.:

A

B

1

20130315

=VASEN(A1;4) → 2013

2

20130315

=OIKEA(A1;2) → 15

3

20130315

=POIMI.TEKSTI(A1;5;2) → 03

Jaa tieto sarakkeisiin

Halutaan jakaa samassa solussa oleva tieto useisiin sarakkeisiin.

Esim. alla olevan kaltainen tieto

A

1

Sari;Sarake;00100;Helsinki;10.5

halutaan muotoon:

A

B

C

D

E

1

Sari Sarake 00100

Helsinki

10,5

Kohteessa on kaksi kohtaa jotka vaativat erikoishuomiota.

1) Postinumeron etunollat on säilyttävä
2) Desimaaliluku 10.5 on muutettava muotoon 10,5. Muutoin Excel muuntaa sen päivämääräksi.

Jako tehdään seuraavasti:

Valitse alue jossa tieto sijaitsee
Valitse Tiedot/Datatyökalut, Jaa teksti sarakkeisiin (Data/Data tools, Text to Columns)

Data/Datatyökalut

Data/Datatyökalut

Saat kolmivaiheisen opasteen

Ensimmäisessä vaiheessa valitse Eroteltu (Delimited) ja napsauta Seuraava (Next)
Toisessa vaiheessa valitse erotinmerkki joka on esimerkissä puolipiste (;) (Semicolon) ja napsauta Seuraava (Next)
Vaiheessa kolme valitse sarake jossa postinumero (00100) ja määrittele sen tietotyyppi tekstiksi (Text)
Seuraavaksi napsauta painiketta Lisäasetukset (Advanced)

Määrittele avautuvassa valintaikkunassa desimaalierottimeksi piste (.) (jos datassa on tuhat erottimena pilkku (,) määrittele se myös tähän valintaikkunaan.
Napsauta OK

Tietotyypin määrittely

Tietotyypin määrittely

Napsauta kolmannen vaiheen valintaikkunan Valmis (Finish) painiketta.

 Tämä toimii samalla tavalla kun tuot ulkoisen teksti tai csv tiedoston Exceliin. Tuonnin aloitat kohdasta Tiedot/Hae ulkoiset tiedot, Tekstistä (Data/Get External data, From Text)

Hae ulkoiset tiedot

Hae ulkoiset tiedot

 

Sähköpostiosoitteen poiminta hyperlinkkisolusta

Viikko takana ja mm tämä asia viikolla esiin.

Osoitelista Excelissä jossa on hyperlinkit sähköpostiositteissa.
Eli kun osoitat solua Excel näyttää sinulle “mailto:nimi@osoite.com”
Jos haluat vaikka kopioida kaikki sähköpostiositteet erikseen liittääksesi ne johonkin niin se on mahdotonta.

Otetaan VBA käyttöön ja homma hoituu.

Luodaan funktio VBA:han joka poistaa mailto: -osan ja kirjoittaa soluun pelkän sähköpostiosoitteen.

Paina Alt+F11 ja VBA avautuu
Valitse VBA –editorissa Insert, Module
Kopioi alla oleva koodi moduuliin

Function SahkopostiOsoite(HyperlinkkiSolu As Range)
       SahkopostiOsoite = Replace(HyperlinkkiSolu.Hyperlinks(1).Address, “mailto:”, “”)
End Function

Siirry taulukkoosi ja valitse Kaavat/Lisää funktio, valitse luokka Käyttäjän määrittämät (Formulas/Insert Function, User defined)
Valitse luomasi funktio ja anna sille argumentiksi solu joka sisältää hyperlinkin.
Esim:
=SahkopostiOsoite(B2)

Se on siinä!

Työkirjan hallintaa

Työtila

Excel 2010:ssä (versiossa 2013 tämä ominaisuus on poistettu) voit tallentaa työtilan jossa sinulla on useampi työkirja auki samanaikaisesti.

Kun avaat tallennetun työtilan Excel avaa kaikki työkirjat samaan järjestykseen mitä sinulla oli työtilan tallennettaessa.
Työtilan tiedostomuoto on .xlw.
Toiminnon Tallenna työtila (Save Workspace) löydät Näytä – valintanauhan ryhmästä Ikkuna (View, Window).

 Sulje kaikki työkirjat

Jos haluat sulkea kaikki avatut työkirjat yhdellä komennolla, laita Sulje kaikki (Close all) komento pikatyökaluriville. Toiminto sulkee kaikki avoinna olevat työkirjat. Kysyy tallennuksesta mikäli niitä ei ole tallennettu.

Pikatyökalurivin muokkaus on kuvattu kohdassa: Tulostuksen koko ikkunan esikatselu Excel 2010:ssä.

Näytä -valintanauha

Taulun kopiointo

Tapa 1
Nopein tapa kopioida taulu on seuraava:

Osoita taulun nimeä
Paina ja pidä näppäimistön CTRL –näppäin alhaalla
Vedä hiirellä taulun nimestä hiiren vasenpainike alas painettuna haluttuun kohtaan jonne kopion haluat
Vapauta hiiren vasenpainike, vapauta CTRL –näppäin.

Hiiren osoittimen kohdalla näkyy kuvake + -merkillä.

Tapa 2
Toinen tapa on osoittaa taulun nimeä ja napsauttaa hiiren kakkospainiketta ja valita valikosta Siirrä tai kopioi (Move or Copy)
Muista rastittaa vaihtoehto Tee kopio (Create copy). Mikäli unohdat tämän taulu siirretään.
Tämä on tapa kun haluat kopioida tai siirtää taulun toiseen työkirjaan joko olemassa olevaan tai uuteen.

Siirrä tai kopioi taulu

Taulujen ryhmittely työkirjassa

Kun haluat tulostaa useamman taulun samasta työkirjasta ryhmittele ne ja saat samalla tulostuskomennolla kaikki tulostettua yhdellä kertaa.
Tällä tavalla saat myös jatkuvan sivunumeroinnin kaikille tauluille jos olet sen ylä- tai alatunnisteeseen luonnut.

Jos sinulla on samankaltaiset taulut ja haluat lisätä jotakin niihin tai muuttaa muotoilua voit päästä helpommalla ryhmittelemällä taulut ensin.
Huomaa että kaikki tekemäsi muutokset laitetaan kaikkiin ryhmiteltyihin tauluihin samoihin kohtaan.

Taulujen ryhmittely:

Peräkkäiset taulut:
Valitse ensimmäinen taulu
Pidä Vaihto (shift) –näppäin alhaalla ja napsauta viimeisen mukaan halutun taulun nimeä.

Ei peräkkäisten taulujen valinta:
Valitse ensimmäinen taulu
Paina ja pidä näppäimistön Ctrl – näppäintä ja napsauta niitä taulujen nimiä jotka haluat valintaan.

 

 

Excel-apuohjelma (Add-In)

Kun luodaan omia funktioita joita tarvitaan usein, voi ne tallentaa Excel-apuohjelmiksi (AddIn) jolloin ne ovat käyttöönoton jälkeen aina käytettävissä.

Tallennus Excel-apuohjelmaksi

Tiedoston tallentaminen AddIn (Excel apuohjelma) –tidedostoksi:
Tiedosto, Tallenna nimellä, Tiedostomuoto: Excel-apuohjelma (.xlam).
Valittuasi tiedostomuodon Excel ehdottaa AddIns –kansiota.

Excel-apuohjelman käyttöönotto

Valitse Tiedosto, Asetukset, Apuohjelmat
Valitse Excel-apuohjelmat listaruudusta Hallitse
Napsauta Siirry
Valitse valintaikkunasta Apuohjelmat luomasi apuohjelma.
Napsauta OK

 Oman funktion käyttö

Luomasi funktion saat käyttöön valintanauhan Kaavat Lisää funktio työkalulla.
Luomasi funktion löydät funktioluokasta Käyttäjän määrittämä tai siitä luokasta jonne sen määrittelit.

Huomaa että voit myös luoda omia funktioluokkia tai lisätä funktion johonkin olemassa olevaan funktioluokkaan.

Apuohjelman poisto

Vaikka poistat apuohjelman käytöstä näkyy se edelleen Apuohjelmat valintaikkunassa.
Poista tiedosto siitä kansiosta jonne olet sen tallentanut
Valitse uudestaan apuohjelmat
Valitse poistettu apuohjelma valintaikkunasta
Saat ilmoituksen että ohjelmaa ei löydy ja poistetaanko se listasta
Vastaa Kyllä ja poistettu ohjelma häviää listasta.

Funktion asetukset

Voit antaa luomallesi funktiolle kuvauksen ja muita asetuksia vba:sta käsin menetelmällä:
Application.MacroOptions.
Syntaxi:
expression.MacroOptions(Macro, Description, HasMenu, MenuText, HasShortcutKey, ShortcutKey, Category, StatusBar, HelpContextID, HelpFile, ArgumentDescriptions)

Määrittelemällä Cetegory voit liittää luomasi funktion johonkin olemassa olevaan funktioluokkaan tai luoda oma luokka funktiollesi.

Menetelmän suoritat vain kerran joten voit suorittaa sen vaikka Immediate windows:ta (Ctrl+G)

Esimerkki:
Application.MacroOptions macro:=”Pankkiviitenumero”, Category:= 1,
Description:=”Laskee pankkiviitenumeron annetusta numerosarjasta”, _
ArgumentDescriptions:=Array(“Numero josta viitenumero lasketaan”)

Liittää makron nimeltä Pankkiviitenumero luokkaan 1 joka on rahoitusfunktiot. Description kohta luo selitteen funktiolle ja ArgumentDescriptions taas selitteen argumentille.