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

1080

    Vastaukset 13

    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. Viesti sinulle

      Tiedät että tunteet ja ajatukset ja meillä on vahva yhteys mistä molemmat tiedetään. Odotan sinua ☀️
      Ikävä
      54
      1064
    2. Mikä on totta mikä ei?

      Onko juoru vai ei että nimeltä mainitsematon henkilö on tehnyt naiselle/naisille jotain joka on väärin?
      Kuhmo
      17
      1009
    3. Olen kironnut sinut alimpaan helvettiin

      Hyvää matkaa.
      Ikävä
      82
      851
    4. Mitä sinulle on tapahtunut lapsena

      Kun olet noin sairas päästäsi? Pikkupojalle ( Miehen kehossa)
      Ikävä
      80
      759
    5. Haluan purkaa vielä tuntemuksia

      Tykkään sinusta kovin paljon❤️ olen surullinen tilanteestasi ja siitä mitä me olemme yhdessä joutuneet kokemaan. Tämä ei
      Ikävä
      21
      737
    6. Tunteiden käsittely kertoo ihmisestä.

      Kun puhutaan "tavallisesta" ihmisestä, joka on suht tasapainoinen eläjä, niin puhutaan oikeastaan taitavasta tunteiden k
      Sinkut
      205
      634
    7. Kyllä tiedän sun

      Likaiset pelit selän takana
      Ikävä
      59
      631
    8. Lopetetaanko tämä

      Juttu ja mennään eteenpäin? Pystytkö?
      Ikävä
      105
      617
    9. Persujen Puhoksen retki

      Perussuomalaiset olivat tehneet turistibussimatkan Puhokseen. Tosin raukat olivat niin peloissaan, etteivät uskaltaneet
      Perussuomalaiset
      193
      594
    10. Onko tuo joku katkera nainen oikeasti

      Joka sinua syyttää?
      Ikävä
      94
      558
    11. Jopa poliisi nauraa paskaista pelkuripersuille

      Puhoksessa jäi "isänmaantoivot" bussiin vapisemaan :-D https://www.is.fi/politiikka/art-2000012319632.html
      Maailman menoa
      260
      492
    12. Just saying

      Mies joka antaa naiselle turvallisen olon, on seksikäs. Ei kieroja kikkoja ja haluaa olla vain sen yhden naisen mies.
      Ikävä
      88
      470
    13. Pilkettä sunnuntain silmässä

      😉 Jos tästä ketjusta löytyisi yksi ihminen, joka saisi sut hymyilemään tänään… Millainen hän olisi? Ei tarvitse kerto
      Sinkut
      73
      461
    14. Tehdään yhdessä itsestämme

      Parhaat versiot❤️ Se vaatii molemmilta hyvää itsetuntoa!
      Ikävä
      39
      434
    15. Aika on tuonut järkeä

      Sä et tiedä musta kaikkea. Jos tietäisit, ymmärtäisit, miksi me ei sovita yhteen. Öljy ja vesi. En mä ole valehdellut,
      Järki ja tunteet
      42
      413
    16. Voisin antaa sulle nyt

      Halin❤️
      Ikävä
      47
      400
    17. 30
      397
    18. Ketkä käy potkimassa ovia öisin?

      Enää ei naurata.
      Haapavesi
      5
      388
    19. Persut eivät uskaltaneet tulla ulos

      Bussiin jäivät https://www.iltalehti.fi/politiikka/a/d7f9fc57-dca0-40b8-9cb1-156e5872dba9
      Perussuomalaiset
      143
      385
    20. Miten viikonloppu meni

      Mielestäsi? Tapasitko kaivatun? Jos, etenivätkö asiat?
      Ikävä
      29
      358
    Aihe