Tänään on 18.04.2024, 06:38.

Excel-ongelma, apuja

Yleiseen turisemiseen muustakin kuin pelaamisesta.
Vastaa Viestiin
Seve
Jäsen
Viestit: 18
Liittynyt: 08.12.2003, 05:16
Pisteitä: 0
Paikkakunta: Espoo

Excel-ongelma, apuja

Viesti Kirjoittaja Seve »

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

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


pokram
Jäsen
Viestit: 88
Liittynyt: 07.12.2003, 10:14
Pisteitä: 2
Paikkakunta: Helsinki

Viesti Kirjoittaja pokram »

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ä :wink:

Jos taas taulukkosi on "kiinteä-rakenteinen", niin sisäkkäisillä IF-funktioilla pärjää jo aika pitkälle.

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


Seve
Jäsen
Viestit: 18
Liittynyt: 08.12.2003, 05:16
Pisteitä: 0
Paikkakunta: Espoo

Viesti Kirjoittaja Seve »

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

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


Elvis
Jäsen
Viestit: 259
Liittynyt: 10.02.2003, 15:15
Pisteitä: 2

Viesti Kirjoittaja Elvis »

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..
Jos ymmärsin oikein, niin SUMIF-funktiolla pitäisi onnistua. Excelin helpistä löytyy apua ton käyttöön.

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


Berrie
Jäsen
Viestit: 1490
Liittynyt: 14.01.2003, 09:40
Pisteitä: 34

Viesti Kirjoittaja Berrie »

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)

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
- 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... :roll:

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


Seve
Jäsen
Viestit: 18
Liittynyt: 08.12.2003, 05:16
Pisteitä: 0
Paikkakunta: Espoo

Viesti Kirjoittaja Seve »

Kiitokset vastaukisista. Tuo SUMIF-funktio hoiti homman varsin kätevästi ja vaivattomasti.

Seve

Pisteitä

Pisteitä yhteensä: 0. Antamasi peukut: 0.

Minikommentit


200% 60€ vedonlyöntibonus Ninjacasino.com.

Katso kaikki vedonlyöntibonukset.

Vastaa Viestiin