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ä.
Keskihajonta kyselystä
13
1080
Vastaukset 13
- 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 FunctionHieno 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
@KundeTaidan 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
@KundeEipä 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ään2007 täällä tosiaan käytössä. Tarvii testata kotona vanhemmalla versiolla.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Viesti sinulle
Tiedät että tunteet ja ajatukset ja meillä on vahva yhteys mistä molemmat tiedetään. Odotan sinua ☀️541064Mikä on totta mikä ei?
Onko juoru vai ei että nimeltä mainitsematon henkilö on tehnyt naiselle/naisille jotain joka on väärin?171009- 82851
Mitä sinulle on tapahtunut lapsena
Kun olet noin sairas päästäsi? Pikkupojalle ( Miehen kehossa)80759Haluan purkaa vielä tuntemuksia
Tykkään sinusta kovin paljon❤️ olen surullinen tilanteestasi ja siitä mitä me olemme yhdessä joutuneet kokemaan. Tämä ei21737Tunteiden käsittely kertoo ihmisestä.
Kun puhutaan "tavallisesta" ihmisestä, joka on suht tasapainoinen eläjä, niin puhutaan oikeastaan taitavasta tunteiden k205634- 59631
- 105617
Persujen Puhoksen retki
Perussuomalaiset olivat tehneet turistibussimatkan Puhokseen. Tosin raukat olivat niin peloissaan, etteivät uskaltaneet193594- 94558
Jopa poliisi nauraa paskaista pelkuripersuille
Puhoksessa jäi "isänmaantoivot" bussiin vapisemaan :-D https://www.is.fi/politiikka/art-2000012319632.html260492Just saying
Mies joka antaa naiselle turvallisen olon, on seksikäs. Ei kieroja kikkoja ja haluaa olla vain sen yhden naisen mies.88470Pilkettä 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 kerto73461- 39434
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,42413- 47400
- 30397
- 5388
Persut eivät uskaltaneet tulla ulos
Bussiin jäivät https://www.iltalehti.fi/politiikka/a/d7f9fc57-dca0-40b8-9cb1-156e5872dba9143385- 29358