Osallistu kisaan Liiga ja rekkamies – 500 € palkinnot!
Excel-ongelma, apuja
-
Seve
- Jäsen
- Viestit: 18
- Liittynyt: 08.12.2003, 05:16
- Pisteitä: 0
- Paikkakunta: Espoo
Excel-ongelma, apuja
Ongelma on siis seuraavanlainen, että pitäisi käydä soluja tietyltä sarakkeelta yksitellen läpi (ylhäältä alaspäin) niin kauan, kun kyseisellä sarakkeella on soluissa jotakin muuta kuin tyhjää. Jokaisella rivillä tallennetaan sitten saman rivin toisessa sarakkeessa oleva arvo tiettyyn soluun tämän läpi käytävän sarakkeen sisällön perusteella. Siis kaikki, jossa on sama merkkijono tallentavat saman rivin toiselta sarakkeelta olevan solun arvon toisaalle määrättyyn soluun. Onkohan tämä nyt tarpeeksi hankalasti ilmaistu, mutta toivottavasti joku saa tolkkua
Seve
Seve
-
pokram
- Jäsen
- Viestit: 88
- Liittynyt: 07.12.2003, 10:14
- Pisteitä: 2
- Paikkakunta: Helsinki
Eiköhän paras täsmälääke tuollaiseen sarakkeen rivien arvoja haistelevaan tarpeeseen ole VBA-koodin (=makro) luonti. Tarvitsisi tosin murusen enemmän infoa elikkäs faktaa tarpeesta. "Tiettyyn soluun" ja "määrättyyn soluun" kaipaavat konkretiaa kaveriksi, ennen Excelin käynnistämistä
Jos taas taulukkosi on "kiinteä-rakenteinen", niin sisäkkäisillä IF-funktioilla pärjää jo aika pitkälle.
Jos taas taulukkosi on "kiinteä-rakenteinen", niin sisäkkäisillä IF-funktioilla pärjää jo aika pitkälle.
Minikommentit
-
Seve
- Jäsen
- Viestit: 18
- Liittynyt: 08.12.2003, 05:16
- Pisteitä: 0
- Paikkakunta: Espoo
Konkreettisesta esimerkistä käy vaikkapa tapaus, jossa listataan lyötyjä vetoja. Ylös kirjataan vedon päivämäärä, veto ja voitto/tappio. Tallaisesta listasta sitten kasataan lista, jossa on jokaisen päivän saldo päivämääränsä perässä. Eli tuosta vetoja sisältävältä listalta noukitaan tietyn päivämäärän voitot johonkin soluun summaksi. Selvitäänkö if-funktioilla. Itsellä ei ainakaan ole vielä leikannut, tosin en kovinkaan kova velho tuon excelin kanssa ole..
Kiitokset vastauksista etukäteen..
Seve
Kiitokset vastauksista etukäteen..
Seve
Minikommentit
-
Elvis
- Jäsen
- Viestit: 259
- Liittynyt: 10.02.2003, 15:15
- Pisteitä: 2
Jos ymmärsin oikein, niin SUMIF-funktiolla pitäisi onnistua. Excelin helpistä löytyy apua ton käyttöön.Seve kirjoitti:Konkreettisesta esimerkistä käy vaikkapa tapaus, jossa listataan lyötyjä vetoja. Ylös kirjataan vedon päivämäärä, veto ja voitto/tappio. Tallaisesta listasta sitten kasataan lista, jossa on jokaisen päivän saldo päivämääränsä perässä. Eli tuosta vetoja sisältävältä listalta noukitaan tietyn päivämäärän voitot johonkin soluun summaksi. Selvitäänkö if-funktioilla. Itsellä ei ainakaan ole vielä leikannut, tosin en kovinkaan kova velho tuon excelin kanssa ole..
Minikommentit
-
Berrie
- Jäsen
- Viestit: 1490
- Liittynyt: 14.01.2003, 09:40
- Pisteitä: 34
Automaattiseksi jos tän haluaisi, tarvittaisi jonkin verran VBA-koodia.
Riveille saa päiväsummat tämmöisellä kaavalla:
=JOS(A1<>"";JOS(A1<>A2;SUMMA.JOS(A:A;A1;B:B);"");"")
tai englantiversiossa
=IF(A1<>"";IF(A1<>A2;SUMIF(A:A;A1;B:B);"");"")
Eli A-sarakkeessa on päivät ja B-sarakkeissa summat, korvaa ne omilla sarakkeillasi.
Mutta tuo ei tainnut olla se mitä hait. Nyt siihen.
Ilman Makroja-tekniikka:
1. Ensin pitää kerätä erilaiset päivämäärät.
- Tiedot - Suodata - Erikoissuodatus...
- Alueeksi pitää valita päivämäärä-sarake
- Tiedot pitää ehdottomasti kopsata eri kohtaan eli johonkin tyhjän sarakkeen ekalle riville
- Vain ainutkertaiset tietueet-chekbox päälle
2. Nyt pitäisi olla erilaiset päivämäärät kasassa
- ekan päivämäärän viereiseen sarakkeeseen kaava:
- =SUMMA.JOS(A:A;L1;B:B) tai =SUMIF(A:A;L1;B:B)
- eli jälleen oletan että A-sarakkeessa on pvm:t ja B:ssä summat ja L1 on toi eka suodatettu pvm
3. Jos ja kun joku meni vituiks, kerro niin jelpataan lisää
Makrollinen-tekniikka:
1. Työkalut - Makro - Nauhoita uusi makro
- ihan sama minkä niminen paina vaan OK:ta
- paina stoppia eli älä tee mitään
- paina alt ja f11 nappuloita
- korvaa sisältö tällä (eli allaoleva roska Subin ja End subin väliin)
- sulje Visual Basic-editori vaikka ruksista ja homma on valmis
Nyt voit sitten ajaa makron Työkalut - Makro - Makrot... valikosta. En ihmeemmin testaillut noita, mutta uskon että toimii.
Jos sulla on englanninkielinen excel, valikoiden nimet vaan muuttuu, muut ei.
EDITTI: Koodissa pitää olla kommentit samalla rivillä eli '-alkuiset rivit pitää olla samalla rivillä tai sitten jos ei mahdu niin laita toisellekin riville ' alkuun
Tajuaakohan tästä selvityksestä kukaan yhtikäs mitään...
Riveille saa päiväsummat tämmöisellä kaavalla:
=JOS(A1<>"";JOS(A1<>A2;SUMMA.JOS(A:A;A1;B:B);"");"")
tai englantiversiossa
=IF(A1<>"";IF(A1<>A2;SUMIF(A:A;A1;B:B);"");"")
Eli A-sarakkeessa on päivät ja B-sarakkeissa summat, korvaa ne omilla sarakkeillasi.
Mutta tuo ei tainnut olla se mitä hait. Nyt siihen.
Ilman Makroja-tekniikka:
1. Ensin pitää kerätä erilaiset päivämäärät.
- Tiedot - Suodata - Erikoissuodatus...
- Alueeksi pitää valita päivämäärä-sarake
- Tiedot pitää ehdottomasti kopsata eri kohtaan eli johonkin tyhjän sarakkeen ekalle riville
- Vain ainutkertaiset tietueet-chekbox päälle
2. Nyt pitäisi olla erilaiset päivämäärät kasassa
- ekan päivämäärän viereiseen sarakkeeseen kaava:
- =SUMMA.JOS(A:A;L1;B:B) tai =SUMIF(A:A;L1;B:B)
- eli jälleen oletan että A-sarakkeessa on pvm:t ja B:ssä summat ja L1 on toi eka suodatettu pvm
3. Jos ja kun joku meni vituiks, kerro niin jelpataan lisää
Makrollinen-tekniikka:
1. Työkalut - Makro - Nauhoita uusi makro
- ihan sama minkä niminen paina vaan OK:ta
- paina stoppia eli älä tee mitään
- paina alt ja f11 nappuloita
- korvaa sisältö tällä (eli allaoleva roska Subin ja End subin väliin)
Koodi: Valitse kaikki
Dim rivi, rivi2 As Integer
Dim pvm As Date
Dim summa As Single
' rivi-muuttuja alustetaan ensimmäisen vetorivin numerolla
rivi = 1
' rivi2-muuttujassa on jemmassa rivinumero johon kerätään päivämäärät ja summat
rivi2 = 1
' käydään läpi niin pitkään kunnes tulee tyhjä rivi
Do While Cells(rivi, 1) <> ""
If Cells(rivi, 1) <> pvm Then
If rivi <> 1 Then
' yhteenlaskettu summa ja pvm lätkätään sarakkeisiin 5 ja 6 eli E ja F
' eli jos haluat kauemmaksi niin ei kun isommat numerot noiden paikalle
Cells(rivi2, 5) = pvm
Cells(rivi2, 6) = summa
' kasvatetaan rivi2-muuttujaa eli osaa heittää seuraavalle riville seur. summat
rivi2 = rivi2 + 1
End If
pvm = Cells(rivi, 1)
summa = Cells(rivi, 2)
Else
summa = summa + Cells(rivi, 2)
End If
rivi = rivi + 1
Loop
' vielä viimeinen pvm ja summa kohdilleen
Cells(rivi2, 5) = pvm
Cells(rivi2, 6) = summa
Nyt voit sitten ajaa makron Työkalut - Makro - Makrot... valikosta. En ihmeemmin testaillut noita, mutta uskon että toimii.
Jos sulla on englanninkielinen excel, valikoiden nimet vaan muuttuu, muut ei.
EDITTI: Koodissa pitää olla kommentit samalla rivillä eli '-alkuiset rivit pitää olla samalla rivillä tai sitten jos ei mahdu niin laita toisellekin riville ' alkuun
Tajuaakohan tästä selvityksestä kukaan yhtikäs mitään...
Minikommentit
-
Seve
- Jäsen
- Viestit: 18
- Liittynyt: 08.12.2003, 05:16
- Pisteitä: 0
- Paikkakunta: Espoo
Minikommentit