Solu muotoilu jos luku muuttuu + tai -

Pötkötin

Moi. Mitenköhän solun värin saisi muuttumaan mikäli solussa oleva luku pienenee tai suurenee? Eli samalla tavalla kuin esim kauppalehden sivuilla jos kurssi laskee niin väri olisi punainen. Koitin ehdollista muotoilua mutta siinä pitää kai olla tietty luku mihin se vertaa kun taas haussa olis että väri muuttuu jos luku kasvaa tai pienenee. Eli siis kurssin mukaan.

13

1771

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • makron-avulla
    • yksinkertaista

      Tuohon ei tarvitse muuta kuin solun muotoilussa, kohdassa "Luku" valitsee kohdan "negatiiviset punaisella", etumerkillä tai ilman.

    • No tässä taas GIF animaatio, joka asettaa taulukon luvun esitystavan niin että negatiiviset luvut näytetään punaisella värillä. https://imgur.com/v0gX3wZ
      Kaiketi tämä on tehtävissä Excelilläkin samaan tapaan.

      • Kundepuu

        kannattaisi lukea kysymys uudestaan, ennenkuin postaa ihan huuhaata...
        kysyjähän haluaa luvun värin muuttuvan sen mukaan pieneneekö se vaiko kasvaa...
        ei onnaa ilman makroa


    • Kundepuu

      taulukon moduuliin
      muuta solu ja värit sopiviksi

      Option Explicit
      Private Sub Worksheet_Change(ByVal Target As Range)
      Static Vanha As Double
      If Not Intersect(Target, Range("A1")) Is Nothing Then
      If Target.Value > Vanha Then
      Target.Interior.Color = vbGreen
      Else
      If Target.Value < Vanha Then
      Target.Interior.Color = vbRed
      Else
      Target.Interior.Color = xlNone
      End If
      End If
      Vanha = Target.Value
      End If

      End Sub

      • värinvaihdos

        Samoilla linjoilla, laitoin vielä mahdollisuuden eräänlaiselle hystereesille, eli muuttujan "muutosraja" arvolla voi vaikuttaa kuinka pieneen muutokseen reagoidaan.

        Värejä voi muutella noiden RGB-funktioiden arvoilla.

        Dim temppi As Double
        Private Sub Worksheet_Change(ByVal target As Range)
        Dim muutosraja As Double: muutosraja = 0.05
        If IsNumeric(target) Then
        ' positiiviset arvot
        If target.Value - temppi > muutosraja Then
        target.Font.Color = RGB(0, 0, 0)
        target.Interior.Color = RGB(0, 255, 0)
        ' negatiiviset arvot
        ElseIf target.Value - temppi < -muutosraja Then
        target.Font.Color = RGB(255, 255, 255)
        target.Interior.Color = RGB(255, 0, 0)
        ' muutoin
        Else
        target.Font.Color = RGB(0, 0, 0)
        target.Interior.ColorIndex = xlNone
        End If
        temppi = target.Value
        Else
        ' jos solussa ei lukuarvo
        target.Font.Color = RGB(0, 0, 0)
        target.Interior.ColorIndex = xlNone
        End If
        End Sub


      • Kundepuu

        ei toimi noin oikein, koska ei huomoi solun vanhaa arvoa vaan viimeisen muutoksen arvon missä tahansa solussa ja vertaa siihen eikä solun oikeaan vanhaan arvoon...
        el


      • bugiraportti
        Kundepuu kirjoitti:

        ei toimi noin oikein, koska ei huomoi solun vanhaa arvoa vaan viimeisen muutoksen arvon missä tahansa solussa ja vertaa siihen eikä solun oikeaan vanhaan arvoon...
        el

        Heh, olet oikeassa. Olisi kannattanut testata useammalla solulla. Pitää viilata Intersect mukaan. Katson samalla saisiko siihen ympättyä muutaman sekunnin vilkkumisen, jolloin olisi hieman visuaalisempi.


    • Tämmöinen

      Tämä muuttaa alueella alue olevan solun väriä, kun sen arvoa muutetaan.
      Väri ei muutu, jos arvo muuttuu jonkin muun solun arvon muuttuessa (solussa on kaava).

      Private Sub Worksheet_Change(ByVal Target As Range)

          Dim uusi
          Dim kaava As String
          Dim alue As Range

      On Error GoTo err:
          Set alue = Range("A1:B5")
          If Not Intersect(alue, Target) Is Nothing Then
              uusi = Target.Value
              kaava = Target.Formula
              Application.EnableEvents = False
              Application.Undo ' katsotaan vanha arvo
              If Target.Value > uusi Then
                  Target.Interior.Color = vbRed
              ElseIf Target.Value < uusi Then
                  Target.Interior.Color = vbGreen
              Else
                  Target.Interior.Color = xlNone
              End If
              Target.Formula = kaava
          End If
      err:
          Application.EnableEvents = True
      End Sub

    • Pötkötin

      Mihin tollaset systeemit laitetaan, johonkin macroon vai? Ei oo tullu koskaan käytettyä..

    • sivullinen3

      Kopioi toi kaava, Excelissä sitten klikkaa alhaalta taulukonvalitsinta (esim. Taul1) hiiren oikealla ja valitse "Näytä koodi". VBA editor avautuu. Liitä kopioimasi makro siihen avautuvaan ikkunaan ja sulje Editori.
      Huomaa makrosta että toiminto "pelaa" vain alueella A1:B5. Muuta aluetta jos tarvis.

    • Sivullinen3

      Siis jos tarkkoja ollaan, niin toi alku piti olla "Kopioi toi makro".
      Sivullinen3 kiittää "Tämmöistä" . Makro pelaa hyvin. Sille löytyy varmasti käyttöä.

    • Pötkötin

      Kiitoksia kaikille, nyt toimii :)

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

    Luetuimmat keskustelut

    1. Hengenvaaralliset kiihdytysajot päättyivät karmealla tavalla, kilpailija kuoli

      Onnettomuudesta on aloitettu selvitys. Tapahtuma keskeytettiin onnettomuuteen. Tapahtumaa tutkitaan paikan päällä yhtei
      Kauhava
      197
      6841
    2. Ootko rakastunut?

      Kerro pois nyt
      Ikävä
      159
      2026
    3. Onhan sulla nainen parempi mieli

      Nyt? Ainakin toivon niin.
      Ikävä
      113
      1678
    4. Ujosteletko tosissaan vai mitä oikeen

      Himmailet???? Mitä pelkäät?????
      Ikävä
      51
      1380
    5. Suureksi onneksesi on myönnettävä

      Että olen nyt sitten mennyt rakastumaan sinuun. Ei tässä mitään, olen kärsivällinen ❤️
      Ikävä
      55
      1228
    6. Möykkähulluus vaati kuolonuhrin

      Nuori elämä menettiin täysin turhaan tällä järjettömyydellä! Toivottavasti näitä ei enää koskaan nähdä Kauhavalla! 😢
      Kauhava
      50
      1098
    7. Älä mies pidä mua pettäjänä

      En petä ketään. Älä mies ajattele niin. Anteeksi että ihastuin suhun varattuna. Pettänyt en ole koskaan ketään vaikka hu
      Ikävä
      99
      1055
    8. Reeniähororeeniä

      Helvetillisen vaikeaa työskennellä hoitajana,kun ei kestä silmissään yhtään läskiä. Saati hoitaa sellaista. Mitä tehdä?
      Kouvola
      6
      977
    9. Tarvitsemme lisää maahanmuuttoa.

      Väestö eläköityy, eli tarvitsemme lisää tekeviä käsiä ja veronmaksajia. Ainut ratkaisu löytyy maahanmuutosta. Nimenomaan
      Maailman menoa
      251
      934
    10. Kävit nainen näemmä mun

      Facessa katsomassa....
      Ikävä
      41
      919
    Aihe