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

999

    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. Anna minulle anteeksi

      Anna minulle anteeksi. Minä pyydän.
      Ikävä
      153
      1884
    2. Kun viimeksi kohtasitte/näitte

      Mitä olitte tekemässä? Millainen ympäristö oli? Löydetään toisemme...
      Ikävä
      130
      1741
    3. Olet kyllä vaarallisen himokas

      Luova, kaunis, määrätietoinen, pervo, mielenkiintoinen, kovanaama, naisellinen ja erikoinen.
      Ikävä
      102
      1507
    4. Anna vielä vähän vihreää valoa

      Teen sitten siirtoni, nainen. Tiedän, että olet jo varovaisesti yrittänyt lähestyä, mutta siitä on jo aikaa. Jos tunnet
      Ikävä
      17
      1213
    5. Mikä on hän on ammatiltaan?

      Vai tiedätkö mitä kaivattusi tekee työkseen?
      Ikävä
      69
      1190
    6. Mitä ajattelit silloin kun

      Löysit hänet?
      Ikävä
      64
      1151
    7. Syksyinen aamuketju suden

      Hyvää huomenta ja kaunista syyspäivää. 🌞🍁🍂☕
      Ikävä
      219
      975
    8. Oletko tutustunut muihin

      Samalla tavalla kuin häneen?
      Ikävä
      68
      796
    9. Uskotko että kohdataan vielä?

      Kysymys otsikossa, aloitukseen ei muuta lisättävää.
      Ikävä
      45
      730
    10. Miksi homous puhuttaa konservatiiveja vuodesta toiseen?

      Kysymykseen on vastattukin Kansanlähetyksen osalta: "Miksi sukupuoleen ja seksuaalisuuteen liittyvät asiat ovat konserv
      Luterilaisuus
      191
      704
    Aihe