Keskihajonta kyselystä

Senor Excel

Eli olen toteuttanut kyselyn, joka toisesta ohjelmasta tuo tiedot seuraavalla tavalla:

Sarakkeessa A on vastausarvot (kyselyyn vastanneet saivat valita asteikolla 4-10), eli solussa A1 arvo 4, solussa A2 arvo 5, solussa A3 arvo 6 jne. arvoon 10 asti. Sarakkeessa C sitten on vastaajien lukumäärä, esim. solussa C1 8, C2 5, C3 4, C4 9, C5 15, C6 6, C7 10. Yritän nyt näistä laskea keskihajontaa.

Ongelma siis on se, että manuaalisesti tämä tietenkin onnistuu, syötän yksitellen jokaisen arvon tyyliin KESKIHAJONTA=(4;4;4;4;4;4;4;4;5;5;5;5;5;6;6;6;6 jne.), mutta haluaisin tämän tehdä kaavalla, koska kysymyksiä on reilusti yli 100 ja vastaajia myös erittäin paljon.

(Olen yrittänyt ratkaista tätä TOISTA -> POIMI.TEKSTI funktioiden avulla, jotta saisin luvut yksittäin exceliin ilman onnistumista koska tämän jälkeen excel ei enää ymmärrä niitä lukuina, vaan tekstinä)

Miten tämä onnistuisi, jos joku saa selvää ongelman selityksestäni.

Suuret kiitokset, jos joku saa tämän selvitettyä.

13

1020

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • hajotajahallitse

      vahvimpia puoliani, enkä ihan ymmärrä mitä keskihajonnalla tarkoitetaan, mutta eikö tuo kaava voi olla esim: =KESKIHAJONTA(A1:A10)
      Ei tarvitse joka solua erikseen laittaa.
      Pikaisella testauksella tuli ihan sama vastaus

      • Senor Excel

        Tuo on keskihajonnan kaava tosiaan, mutta tässä tilanteessa sitä ei voi ainakaan tuossa muodossa hyödyntää koska siihen pitäisi saada mukaan C sarakkeen vastausten lukumäärät.


      • muuan mies
        Senor Excel kirjoitti:

        Tuo on keskihajonnan kaava tosiaan, mutta tässä tilanteessa sitä ei voi ainakaan tuossa muodossa hyödyntää koska siihen pitäisi saada mukaan C sarakkeen vastausten lukumäärät.

        Katso netistä keskihajonnan laskeminen frekvenssijakautumasta. löytyy suomenkielelläkin tilastomatematiikkaa opastavia sivustoja, esim http://www.valt.helsinki.fi/staff/KUKKULA/VANHAT/jok134.htm


      • muuan mies kirjoitti:

        Katso netistä keskihajonnan laskeminen frekvenssijakautumasta. löytyy suomenkielelläkin tilastomatematiikkaa opastavia sivustoja, esim http://www.valt.helsinki.fi/staff/KUKKULA/VANHAT/jok134.htm

        vaan argumenttejen syötöstähän tässä on kyse....
        ei toi onnaa ilman VBA: n apua automaattisesti

        soluun kaava =Keskihajonta(A2:A8;2), missä A2:A8 on asteikko ja offset 2 asteikosta eli C -sarakkeessa vastausten määrät.

        moduuliin...

        Option Base 1
        Function Keskihajonta(Arvot As Range) As Double
        Dim i As Long
        Dim j As Long
        Dim solu As Range
        Dim Arr() As Variant

        On Error Resume Next
        Application.Volatile
        j = 1
        For Each solu In Arvot
        ' määrät C sarakkeessa(Offset(0, 2)) kun kaavana =Keskihajonta(A2:A8;2)

        For i = 1 To solu.Offset(0, 2)
        ReDim Preserve Arr(j)
        Arr(j) = solu
        j = j 1
        Next i
        Next solu
        Keskihajonta = Application.WorksheetFunction.StDev(Arr)
        End Function


      • Senor Excel
        kunde kirjoitti:

        vaan argumenttejen syötöstähän tässä on kyse....
        ei toi onnaa ilman VBA: n apua automaattisesti

        soluun kaava =Keskihajonta(A2:A8;2), missä A2:A8 on asteikko ja offset 2 asteikosta eli C -sarakkeessa vastausten määrät.

        moduuliin...

        Option Base 1
        Function Keskihajonta(Arvot As Range) As Double
        Dim i As Long
        Dim j As Long
        Dim solu As Range
        Dim Arr() As Variant

        On Error Resume Next
        Application.Volatile
        j = 1
        For Each solu In Arvot
        ' määrät C sarakkeessa(Offset(0, 2)) kun kaavana =Keskihajonta(A2:A8;2)

        For i = 1 To solu.Offset(0, 2)
        ReDim Preserve Arr(j)
        Arr(j) = solu
        j = j 1
        Next i
        Next solu
        Keskihajonta = Application.WorksheetFunction.StDev(Arr)
        End Function

        Hieno Homma "Eihän kaavassa mitään vikaa ole"! Tuosta juuri oli kysymys, erittäin suuri kiitos!

        VBA sinänsä ei ole tuttu, mutta eiköhän tuon käyttö luonnistu kun pistit ystävällisesti kaavankin valmiiksi. Asentelen tässä juuri VBA:ta.

        Vielä kerran erittäin suuri kiitos, tuosta oli paljon apua.


      • Senor Excel
        Senor Excel kirjoitti:

        Hieno Homma "Eihän kaavassa mitään vikaa ole"! Tuosta juuri oli kysymys, erittäin suuri kiitos!

        VBA sinänsä ei ole tuttu, mutta eiköhän tuon käyttö luonnistu kun pistit ystävällisesti kaavankin valmiiksi. Asentelen tässä juuri VBA:ta.

        Vielä kerran erittäin suuri kiitos, tuosta oli paljon apua.

        Vielä yksi kysymys tuosta VBA:sta. Syötin kyseiseen exceliin moduuliin tuon pätkän.

        Ikävä kyllä VBA taitoni ovat suoraan sanottuna 0, joten tarviiko minun muokata tuota koodia / kaavaa jollakin tavalla?

        Eli sain tulokseksi "Argument not optional" virheilmoituksen.

        Eli vielä tarkennukseksi, miltä excelini näyttää

        A2 solussa 4 C2 solussa10
        A3 solussa 5 C3 solussa 0
        A4 solussa 6 C4 solussa 40
        A5 solussa 7 C5 solussa 12
        A6 solussa 8 C6 solussa 13
        A7 solussa 9 C7 solussa 16
        A8 solussa 10 C8 solussa 10

        Keskihajonta löytyy solusta G2

        Eli konkreettisesti... Syötän aluksi G2 soluun kaavan =Keskihajonta(A2:A8;2)

        Tämän jälkeen avaan VBAn kehitystyökalut valikosta ja copy pastean aukeavaan ikkunaan antamasi kaavan sinne tekemättä siihen mitään muutoksia(?)

        Tallennan .xlsm tiedoston

        Tämän jälkeen klikkaan makrot kohtaa kehitystyökaluista ja suoritan keskihajonta nimisen makron(?)

        (tämän prosessin tehtyäni sain tosiaan kyseisen virheilmoituksen)

        Kysymys varmaan ammattilaisen silmiin on typerä, koska luultavasti minulla on joku alokasmainen virhe tai olen ymmärtänyt asian ihan väärin...mutta mitä siis teen väärin?


      • kunde vaan
        Senor Excel kirjoitti:

        Vielä yksi kysymys tuosta VBA:sta. Syötin kyseiseen exceliin moduuliin tuon pätkän.

        Ikävä kyllä VBA taitoni ovat suoraan sanottuna 0, joten tarviiko minun muokata tuota koodia / kaavaa jollakin tavalla?

        Eli sain tulokseksi "Argument not optional" virheilmoituksen.

        Eli vielä tarkennukseksi, miltä excelini näyttää

        A2 solussa 4 C2 solussa10
        A3 solussa 5 C3 solussa 0
        A4 solussa 6 C4 solussa 40
        A5 solussa 7 C5 solussa 12
        A6 solussa 8 C6 solussa 13
        A7 solussa 9 C7 solussa 16
        A8 solussa 10 C8 solussa 10

        Keskihajonta löytyy solusta G2

        Eli konkreettisesti... Syötän aluksi G2 soluun kaavan =Keskihajonta(A2:A8;2)

        Tämän jälkeen avaan VBAn kehitystyökalut valikosta ja copy pastean aukeavaan ikkunaan antamasi kaavan sinne tekemättä siihen mitään muutoksia(?)

        Tallennan .xlsm tiedoston

        Tämän jälkeen klikkaan makrot kohtaa kehitystyökaluista ja suoritan keskihajonta nimisen makron(?)

        (tämän prosessin tehtyäni sain tosiaan kyseisen virheilmoituksen)

        Kysymys varmaan ammattilaisen silmiin on typerä, koska luultavasti minulla on joku alokasmainen virhe tai olen ymmärtänyt asian ihan väärin...mutta mitä siis teen väärin?

        eipähän sydeemi antanut kirjautua omilla tunnareilla, mutta kokeillaan tämmösillä...

        1. taulukkonäkymässä näppäinyhdistelmä ALT F11
        2. valikosta INSERT/MODULE
        3. Oikealle näkymään ilmestyneeseen tyhjään moduuliin ikkunaan (oletuksena Module1, näkyy vasemmalla VBA Project ikkunassa) kopioit koodin. Jos aiemmin lisättyjä moduuleja niin voi lisätä mihin tavalliseen moduuliin tahansa- EI ThisWorkbook moduuliin!!!.
        4. Tilasto tiedot soluissa jo kirjoitettuna, ellei lisää ne nyt?
        5. Haluamaasi soluun kaava =Keskihajonta(A2:A8;2) ja tulokseksi itselläni tulee 1,722651
        @Kunde


      • Senor Excel
        kunde vaan kirjoitti:

        eipähän sydeemi antanut kirjautua omilla tunnareilla, mutta kokeillaan tämmösillä...

        1. taulukkonäkymässä näppäinyhdistelmä ALT F11
        2. valikosta INSERT/MODULE
        3. Oikealle näkymään ilmestyneeseen tyhjään moduuliin ikkunaan (oletuksena Module1, näkyy vasemmalla VBA Project ikkunassa) kopioit koodin. Jos aiemmin lisättyjä moduuleja niin voi lisätä mihin tavalliseen moduuliin tahansa- EI ThisWorkbook moduuliin!!!.
        4. Tilasto tiedot soluissa jo kirjoitettuna, ellei lisää ne nyt?
        5. Haluamaasi soluun kaava =Keskihajonta(A2:A8;2) ja tulokseksi itselläni tulee 1,722651
        @Kunde

        Taidan edelleen tehdä jotain väärin, koska noiden askeleiden jälkeen edellisessä viestissä, joita mielestäni noudatin orjallisesti, keskihajontani edelleen näyttää 2,66927 (mikä siis on keskihajonta luvuista 4-10, ottamatta huomioon C sarakkeen arvoja).

        Olen valinnut "makrosuojaus" kohdasta "ota käyttöön kaikki makrot", tarvitseeko minun tehdä jotain muita toimenpiteitä tai tallentaa tuota kyseistä koodia jollakin tavalla, jotta se osaa ottaa sen huomioon?

        Kiitos muuten jälleen erittäin paljon Kunde, hienoa että viitsit auttaa aloittelijaa :)


      • Senor Excel
        Senor Excel kirjoitti:

        Taidan edelleen tehdä jotain väärin, koska noiden askeleiden jälkeen edellisessä viestissä, joita mielestäni noudatin orjallisesti, keskihajontani edelleen näyttää 2,66927 (mikä siis on keskihajonta luvuista 4-10, ottamatta huomioon C sarakkeen arvoja).

        Olen valinnut "makrosuojaus" kohdasta "ota käyttöön kaikki makrot", tarvitseeko minun tehdä jotain muita toimenpiteitä tai tallentaa tuota kyseistä koodia jollakin tavalla, jotta se osaa ottaa sen huomioon?

        Kiitos muuten jälleen erittäin paljon Kunde, hienoa että viitsit auttaa aloittelijaa :)

        Heh, tulikin mieleen, että minulla on useampia eri taulukoita excelissä, ja kyseinen on Taul6:ssa, sen viittauksen ilmeisesti tarvitsee näkyä jossain myös jotta VBA:n kaava kohdistuu oikeaan taulukkoon?


      • kunde vaan
        Senor Excel kirjoitti:

        Heh, tulikin mieleen, että minulla on useampia eri taulukoita excelissä, ja kyseinen on Taul6:ssa, sen viittauksen ilmeisesti tarvitsee näkyä jossain myös jotta VBA:n kaava kohdistuu oikeaan taulukkoon?

        olinkin postannut väärän koodin...
        yllä oleva koodi toimii kaavalla =keskihajonta(A2:A8)
        tai jos eri taulukossa esim. =keskihajonta(Sheet1!A2:A8)

        tämä modifioitu kaava minun olisi pitänyt postata...
        eli soluun kaava =keskihajonta(A2:A8;2)

        Option Base 1
        Function Keskihajonta(Arvot As Range, Siirtymä As Integer) As Double
        Dim i As Long
        Dim j As Long
        Dim solu As Range
        Dim Arr() As Variant

        On Error Resume Next
        Application.Volatile
        j = 1
        For Each solu In Arvot
        ' määrät C sarakkeessa(Offset(0, 2)) kun kaavana =Keskihajonta(A2:A8;2)

        For i = 1 To solu.Offset(0, Siirtymä)
        ReDim Preserve Arr(j)
        Arr(j) = solu
        j = j 1
        Next i
        Next solu
        Keskihajonta = Application.WorksheetFunction.StDev(Arr)
        End Function

        anteeksi nyt aiheuttamani hämmennys
        @Kunde


      • Senor Excel
        kunde vaan kirjoitti:

        olinkin postannut väärän koodin...
        yllä oleva koodi toimii kaavalla =keskihajonta(A2:A8)
        tai jos eri taulukossa esim. =keskihajonta(Sheet1!A2:A8)

        tämä modifioitu kaava minun olisi pitänyt postata...
        eli soluun kaava =keskihajonta(A2:A8;2)

        Option Base 1
        Function Keskihajonta(Arvot As Range, Siirtymä As Integer) As Double
        Dim i As Long
        Dim j As Long
        Dim solu As Range
        Dim Arr() As Variant

        On Error Resume Next
        Application.Volatile
        j = 1
        For Each solu In Arvot
        ' määrät C sarakkeessa(Offset(0, 2)) kun kaavana =Keskihajonta(A2:A8;2)

        For i = 1 To solu.Offset(0, Siirtymä)
        ReDim Preserve Arr(j)
        Arr(j) = solu
        j = j 1
        Next i
        Next solu
        Keskihajonta = Application.WorksheetFunction.StDev(Arr)
        End Function

        anteeksi nyt aiheuttamani hämmennys
        @Kunde

        Eipä mitään, kiva kun yrität auttaa.

        Edelleenkään en saa tosin toimimaan, avasin vielä varmuuden vuoksi uuden tyhjän excelin, johon täytin pelkästään solut A2-A8 ja C2-C8, menin suoraan ALT F11 ja insert modulen kautta copy pasteamaan tuon viimeksi mainitsemasi pätkän ja tämän jälkeen syötin keskihajonnan kaavan taulukkoon, mutta edelleen se vaan näyttää keskihajonnan luvuista 4-10 (jotka sarakkeessa A2-A8) ottamatta huomioon C sarakkeen lukumääriä.

        Onko tosiaan niin, että kun olen syöttänyt kaavan, se automaattisesti "ajaa itsensä", eli en tarvitse mitään "run" tmv. komentoa mikä saattaa tuon koodinpätkän aktiiviseksi / voimaan?


      • kunde vaan
        Senor Excel kirjoitti:

        Eipä mitään, kiva kun yrität auttaa.

        Edelleenkään en saa tosin toimimaan, avasin vielä varmuuden vuoksi uuden tyhjän excelin, johon täytin pelkästään solut A2-A8 ja C2-C8, menin suoraan ALT F11 ja insert modulen kautta copy pasteamaan tuon viimeksi mainitsemasi pätkän ja tämän jälkeen syötin keskihajonnan kaavan taulukkoon, mutta edelleen se vaan näyttää keskihajonnan luvuista 4-10 (jotka sarakkeessa A2-A8) ottamatta huomioon C sarakkeen lukumääriä.

        Onko tosiaan niin, että kun olen syöttänyt kaavan, se automaattisesti "ajaa itsensä", eli en tarvitse mitään "run" tmv. komentoa mikä saattaa tuon koodinpätkän aktiiviseksi / voimaan?

        joku muukin voisi testata toimiiko 2007 versiossa...
        tekemäni koodi on UDF eli käyttäjän määrittelemä funktio ja se toimii heti kun olet syöttänyt sen soluun
        En nyt sitten tiedä onko 2007 versiossa jotain muutettu, mutta vanhemmassa versiossa toimii kumminkin ihan jees...

        P.S. ei hyväksy sissänkirjausta omilla tunnareilla vieläkään


      • Senor Excel
        kunde vaan kirjoitti:

        joku muukin voisi testata toimiiko 2007 versiossa...
        tekemäni koodi on UDF eli käyttäjän määrittelemä funktio ja se toimii heti kun olet syöttänyt sen soluun
        En nyt sitten tiedä onko 2007 versiossa jotain muutettu, mutta vanhemmassa versiossa toimii kumminkin ihan jees...

        P.S. ei hyväksy sissänkirjausta omilla tunnareilla vieläkään

        2007 täällä tosiaan käytössä. Tarvii testata kotona vanhemmalla versiolla.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Tiedätkö, että haluaisin panna

      Sinua. Onko sinulla samanlaiset ajatukset ja tunteet?
      Ikävä
      182
      4300
    2. Hyväksytty kaivattusi

      Vartaloa vai et? Rehellinen vastaus
      Ikävä
      34
      1584
    3. Minulta loppuu aika

      Halusin olla täydellinen. Nyt näyttää siltä että viimeinen kiristys jää puolitiehen, sillä h-hetki on jo ihan kohta käsi
      Ikävä
      40
      1500
    4. Syvälliset keskustelut

      Olisivat tärkeintä ensisijaisesti hänen kanssaan Tulisi sellainen hetki, mutta kaikki meni pieleen
      Ikävä
      25
      1484
    5. Olisipa sitä henkisesti eheämpi ja rohkeampi

      mikään maallinen mammona ei itseäni kiinnosta, eikä sen menetys kiinnostus. Mutta kun kohtaa jonkun sykäyttävän ihmisen,
      Ikävä
      20
      1375
    6. Mitä ajattelet

      Kun näet kaivattuasi?
      Ikävä
      112
      1306
    7. Moi, nainen

      Tunnustan, olen heikkona sun hymyyn, ja sekään ei auta yhtään, että sulla on täydellinen nenä. Joten ensi kerralla, kun
      Ikävä
      30
      1190
    8. Kyllähän tämä vähän kirpaisee

      Mutta oman sisäisen rauhan vuoksi jätän sinut nyt historiaan. Todennäköisesti olet jo sinäkin mennyt eteenpäin. Olipah
      Ikävä
      38
      1187
    9. Nyt on pakko tunnustaa

      AA että on ikävä sinua!!
      Ikävä
      19
      1149
    10. Sulla on uskomaton luonne

      Saat minut hetkessä iloiseksi, tai sanotaan nyt niin, että ajatus sinusta saa sydämeni hyppimään riemusta. En vain saa s
      Ikävä
      44
      1038
    Aihe