Solun arvon päivityksestä muutos-prosentti toiseen soluun

Anonyymi-ap

Miten tehdään viereiseen soluun prosenttilukema siitä paljonko päivitetty arvo on prosentteina vanhasta arvosta. Prosenttilaskuna tuo on helppo, mutta kun se vanha arvo pyyhkiytyy pois kun se korvataan uudella arvolla.

11

707

    Vastaukset 11

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Mitä oikein haluat, eikö alkuperäinen ja laskettu arvo voisi olla eri soluissa? Jos arvon kirjoittaa vanhan päälle, tottakai se häviää.

      • Anonyymi

        Se on uusi arvo, ei mikään laskettu arvo, ja sitä päivitetään joka päivä. Seurataan siis trendiä, onko se nouseva vai laskeva.


      • Anonyymi
        Anonyymi kirjoitti:

        Se on uusi arvo, ei mikään laskettu arvo, ja sitä päivitetään joka päivä. Seurataan siis trendiä, onko se nouseva vai laskeva.

        Siis on yksi arvo, joka muuttuu päivittäin ja toiseen soluun tulee montako prosenttia se on muuttunut edellisestä. Kopioi tämä ko. taulukon moduliin:

        Private Sub Worksheet_Change(ByVal Target As Range)
            muuttuva = "C2"
            muutos = "D2"
            Dim vanha
            
            On Error GoTo loppu:
            
            If Not (Intersect(Target, Range(muuttuva)) Is Nothing) Then
                Application.EnableEvents = False
                Application.Undo
                vanha = Range(muuttuva)
                Application.Undo
                Range(muutos) = (Range(muuttuva) - vanha) / vanha
            End If
            
        loppu:
            Application.EnableEvents = True
        End Sub


      • Anonyymi
        Anonyymi kirjoitti:

        Siis on yksi arvo, joka muuttuu päivittäin ja toiseen soluun tulee montako prosenttia se on muuttunut edellisestä. Kopioi tämä ko. taulukon moduliin:

        Private Sub Worksheet_Change(ByVal Target As Range)
            muuttuva = "C2"
            muutos = "D2"
            Dim vanha
            
            On Error GoTo loppu:
            
            If Not (Intersect(Target, Range(muuttuva)) Is Nothing) Then
                Application.EnableEvents = False
                Application.Undo
                vanha = Range(muuttuva)
                Application.Undo
                Range(muutos) = (Range(muuttuva) - vanha) / vanha
            End If
            
        loppu:
            Application.EnableEvents = True
        End Sub

        Tuotapa täytyykin kokeilla.
        Entä jos niitä päivitettäviä arvoja on samassa sarakkeessa useita rivejä allekkain, on jokaiselle riville on kirjoitettava oma koodi.
        Vai voisiko olla niin että ohjelma kävisi läpi tietyn alueen sarakkeesta silmukkana, ja toteuttaisi vain sen rivin missä arvon päivitys tapahtuu?


      • Anonyymi
        Anonyymi kirjoitti:

        Siis on yksi arvo, joka muuttuu päivittäin ja toiseen soluun tulee montako prosenttia se on muuttunut edellisestä. Kopioi tämä ko. taulukon moduliin:

        Private Sub Worksheet_Change(ByVal Target As Range)
            muuttuva = "C2"
            muutos = "D2"
            Dim vanha
            
            On Error GoTo loppu:
            
            If Not (Intersect(Target, Range(muuttuva)) Is Nothing) Then
                Application.EnableEvents = False
                Application.Undo
                vanha = Range(muuttuva)
                Application.Undo
                Range(muutos) = (Range(muuttuva) - vanha) / vanha
            End If
            
        loppu:
            Application.EnableEvents = True
        End Sub

        Koodi toimii juuri halutulla tavalla, thx!


      • Anonyymi
        Anonyymi kirjoitti:

        Tuotapa täytyykin kokeilla.
        Entä jos niitä päivitettäviä arvoja on samassa sarakkeessa useita rivejä allekkain, on jokaiselle riville on kirjoitettava oma koodi.
        Vai voisiko olla niin että ohjelma kävisi läpi tietyn alueen sarakkeesta silmukkana, ja toteuttaisi vain sen rivin missä arvon päivitys tapahtuu?

        Tämä laskee muutoksen muuttuneen solun vasemmalle. Oletuksena on, että vain yksi arvo muuttuu kerrallaan. Kaikkien läpikäynti ehdottamallasi tavalla tulee kyseeseen vain, jos kaikki alueen arvot muuttuvat. Muuten, vaikka vain yksi muuttuu, kaikkien muiden muutosprosentti menne nollaksi.

        Private Sub Worksheet_Change(ByVal Target As Range)
            Const muuttuva = "C2:C10"
            Dim vanha, r, c
            
            On Error GoTo loppu:
            If Target.Count = 1 And Not (Intersect(Target, Range(muuttuva)) Is Nothing) Then
                r = Target.Row
                c = Target.Column
                Application.EnableEvents = False
                Application.Undo
                vanha = Cells(r, c)
                Application.Undo
                Cells(r, c + 1) = (Cells(r, c) - vanha) / vanha
            End If
            
        loppu:
            Application.EnableEvents = True
        End Sub


      • Anonyymi
        Anonyymi kirjoitti:

        Tämä laskee muutoksen muuttuneen solun vasemmalle. Oletuksena on, että vain yksi arvo muuttuu kerrallaan. Kaikkien läpikäynti ehdottamallasi tavalla tulee kyseeseen vain, jos kaikki alueen arvot muuttuvat. Muuten, vaikka vain yksi muuttuu, kaikkien muiden muutosprosentti menne nollaksi.

        Private Sub Worksheet_Change(ByVal Target As Range)
            Const muuttuva = "C2:C10"
            Dim vanha, r, c
            
            On Error GoTo loppu:
            If Target.Count = 1 And Not (Intersect(Target, Range(muuttuva)) Is Nothing) Then
                r = Target.Row
                c = Target.Column
                Application.EnableEvents = False
                Application.Undo
                vanha = Cells(r, c)
                Application.Undo
                Cells(r, c 1) = (Cells(r, c) - vanha) / vanha
            End If
            
        loppu:
            Application.EnableEvents = True
        End Sub

        Toimii tämäkin. 👍
        Yksi kerrallaan noita arvoja käsin päivitellään, ei kerralla copy-paste menetelmällä.
        Jos haluaa vielä entisenkin arvon näkyville muistin tueksi, sen saa excel-kaavalla =C2/(((D2*100)+100)/100)


    • Anonyymi
    • Anonyymi

      Ei ole prosenttilasku ihan niin yksinkertaista kuin luulisi. Kun 100 korotetaan 120, on se 20 % korotus, mutta kun se alennetaan takaisin 100, onkin alennus vain16,67 %
      Pitäisi kehittää joku bisnesidea että tuolla erotuksella pystyisi tekemään tilin... 😏

      • Anonyymi

        Kun 100 korotetaan 120 se on 220.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kuhmolainen opettaja tuomittu vainoamisesta

      https://yle.fi/a/74-20248184 ”Kuusikymppinen kuhmolaisnainen piinasi naapureitaan lähes kahdeksan vuoden ajan. Nainen
      Kuhmo
      35
      1779
    2. Nyt se syksy on sitten alkanut

      Esimerkiksi tänään sataa aamusta iltaan, ja nytkin.
      Maailman menoa
      79
      1321
    3. Olet nainen ollut vaikein rasti

      Eniten olet tunteitani myllännyt ja niitä kuluttanut, ja tuottanut. 🤔
      Ikävä
      84
      1271
    4. Elämäni biisi -paljastus: Tänä lauantaina 26.9. nämä julkkikset istahtavat sinisille sohville!

      Katsotko Elämäni biisiä? Elämäni biisi on monen suomalaisen suosikki. Vieraslista lauantaina 26.9. tarjoilee vieraita m
      Tv-sarjat
      13
      1156
    5. Anteeksi J-mies

      Anteeksi että myötävaikutin siihen että rakastuit minuun, jota et voi koskaan saada. Viimeksi kun näimme ja katselimme t
      Ikävä
      129
      1065
    6. Mihin Asiakirjat ovat voineet kunnasta kadota???

      LUE kuinka verorahoja haaskattiin Yle: Ähtärin pandalaskelmat salattiin ja hukattiin - Satakunnan Kansa https://share.
      Ähtäri
      93
      970
    7. Riittääkö mahkut

      Kaivattuusi 🤭.
      Ikävä
      74
      969
    8. Mitä muuta on olemassa kuin lisääntyminen

      Jos mies ei pääse lisääntymään niin mikä hänen osansa elämässä on? mitä jää jäljelle? Hän on vain muiden palvelija kok
      Sinkut
      147
      781
    9. Ähtäri on taas TV: n ja radion ykkösuutinen

      Uusi podcast on julkaistu ja on nyt kuunneltavissa. Mot on tehnyt hyvää työtä! Mikko Savola ja kepu ei ota mitään vast
      Ähtäri
      52
      742
    10. Siinä kävi mies nyt niin että tämä ämmä muuttaa ulkomaille

      Vuonojen maa kutsuu, joten ei hätää. Et kuule minusta enää. 😂 Lycka till! Ämmä riittää.
      Ikävä
      86
      717
    11. Moottoripyöräonnettomuus

      Mopomiitissä tapahtunut onnettomuus ja uutisointi. Ajoradan ylityksen vaarallisuudesta ei mitään uutisointia. Ei myöskää
      Alajärvi
      56
      670
    12. Suomen 4. seksikkäin mies Miika Nousiaisen tilalle - Pitääkö olla huolissaan palaa tv:seen

      Suosittu keskusteluohjelma tekee paluun. Tällä kertaa panelistina ei jatka enää Miika Nousiainen, vaan hänen tilalleen t
      Suomalaiset julkkikset
      13
      669
    13. Uusi ruokapaikka

      Tuleeko Haapavedelle uusi lounaspaikka ,haetaan kokkia? Uusi firma kyseessä
      Haapavesi
      27
      648
    14. Minulla on ikävä Sinua kulta, rakas

      Olisitpa lähelläni, tarvitsen sinua ❤️
      Ikävä
      43
      645
    15. haluatko lopettaa

      ihan lopullisesti
      Ikävä
      147
      641
    16. Miten sinä voit?

      Kysytkö kukaan sitä sinulta? Olen huomannut, että jos kohtaa empaattisen ihmisen ja hän kysyy noin, saattaa padot murtua
      Ikävä
      93
      622
    17. Kerro kolme hyvää asiaa

      Kaipaamastasi ihmisestä ja lisää perään onko kaivattusi n vai m 😍
      Ikävä
      28
      618
    18. Tilanteenne

      Onko tilanteenne tällä hetkellä hyvä?
      Ikävä
      51
      617
    19. Jos oikeasti haluat mies

      Tiedät mitä on tehtävä. Luotan, että etenet jos haluat. En voi tehdä enää mitään kun ei ole numeroasi.
      Ikävä
      95
      605
    20. 47
      577
    Aihe