Värikoodi monimutkaiseen kaavaan

Ville 59

Hei,

Onnistun hakemaan onnistuneesti toisesta välilehdeltä tiedot seuraavan kaavan avulla:
=IF(ISNA(VLOOKUP(B59;'991 puhelimet 6 2011'!$A$2:$B$220;2;FALSE));0;VLOOKUP(B59;'991 puhelimet 6 2011'!$A$2:$C$220;2;FALSE))

Haluisin ettei tietyllä värikoodilla olevalle tule arvoa. yritin pyöritellä kaavaa muotoon:
=IF(AND(ColorFunction($N$5;$N$4:$N$50;""));ISNA(VLOOKUP(B59;'991 puhelimet 6 2011'!$A$2:$B$220;2;FALSE));0;VLOOKUP(B59;'991 puhelimet 6 2011'!$A$2:$C$220;2;FALSE)) --> ei toimi ainakaan näin
ja lisäsin VBA:han:
Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)

Dim rCell As Range

Dim lCol As Long

Dim vResult

lCol = rColor.Interior.ColorIndex



If SUM = True Then

For Each rCell In rRange

If rCell.Interior.ColorIndex = lCol Then

vResult = WorksheetFunction.SUM(rCell, vResult)

End If

Next rCell

Else

For Each rCell In rRange

If rCell.Interior.ColorIndex = lCol Then

vResult = 1 vResult

End If

Next rCell

End If



ColorFunction = vResult

End Function

osaisko joku jeesata mitä pitää muuttaa? Eli ideana että N sarakkeeseen mihin haetaan toiselta välilehdeltä tietoa, että jos on tietyn värinen, niin kohta jää tyhjäksi, vaikka sille arvo olisi toisella välilehdellä

6

229

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • muuan mies

      Riittäisikö se, että nuo tietyn väriset näytetään valkoisella värillä valkoisella pohjalla ehdollisella muotoilulla, jolloin kohta _näyttää_ tyhjältä?

    • ville 59

      niin olen tähän mennessä toiminut.. mutta luulisi onnistuvan kaavan ja VBA:n avulla, jolloin saisin kohdat kokonaan ilman arvoa..

      • haet siis solulla B59 arvoa toisesta taulukosta ja olet varmaankin kopioinut kaavaa alaspäin jolloin seuraavaan soluun haetaan arvoa solusta B60 jne...

        tokassa kaavassa yrität sitten "funktioräpellyksestäsi" päätellen laskea solun N5 värin mukaan joko summaa tai solun N5 väristen lukumäärää soluista N4:N50 riippuen funktion kutsusta?

        päin persettähän toi on kokonaan...
        funktio ei palauta mitään

        jos siis haluat laskea tietyltä alueelta tietynväriset arvot niin paras tehdä oma makro ja käyttää sitä ja samalla tyhjentää tietynväristen solujen arvot.
        Mitenkäs noi värit soluun määritellään?

        kahotaan saatko selkokielistä kyssäri aikaan...


    • Ville 59

      juu nimenomaa funktioräpellys yritykseni oli... =D

      juu olet oikeassa, kyseisen rivin kohdalla haen solun B59 arvoa toisesta taulukosta ja ratkaisu näkyy sarakkeessa N(tässä tapauksessa esim N59). Sama homma toistuu esim sitten seuraavalla rivillä B60... jne.. siinä ei ongelmaa...
      eli ymmärtääkseni kaavani:
      =IF(ISNA(VLOOKUP(B59;'991 puhelimet 6 2011'!$A$2:$B$220;2;FALSE));0;VLOOKUP(B59;'991 puhelimet 6 2011'!$A$2:$C$220;2;FALSE))
      on tätä myöten oikea...

      mutta jos on N sarakkeessa on väreillä erilaisia henkilöitä jotka ovat väriltään harmaat(ei kuuluu saada arvoa vaikka sellainen olisikin....) ja sitten valkoinen(henkilöt jotka saavat arvon jos sellainen on olemassa toisessa taulokossa)
      Ns. valkoisten osalta no problem, se onnistuu yllä mainitulla kaavalla, eli tuo arvon jos sellainen on olemassa..
      mutta harmaille en haluisi arvoa vaikka sellainen olisikin.. Olen ratkaissut tähän mennessä ehdollisella muotoilulla, sillä saan kyseisen solun tyhjännäköiseksi, muttei poista arvoa.. Tällöin ongelmaksi muodostuu jos linkitän kyseistä solua eteenpäin muissa kaavoissa.

      en tiedä onko tämä nyt selkeemmin selitetty.. hope so! oman makron tekemisestä en tiedä mitään.. tuon copypastoin...

      • kunde

        ei oo aikaa enempää kun reissua pukkaa...
        poista kaavat N sarakkeesta ja lisää se koodissa oamakaavasi kohtaan...

        jos ei onnaa niin viikon päästä palailen asiaan

        väri on 15 =harmaa, muuta oikeaksi

        taulukon moduuliin...

        Option Explicit

        Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("B:B")) Is Nothing Then
        If Target.Offset(0, 12).Interior.ColorIndex = 15 Then
        Target.Offset(0, 12) = ""
        Else
        Target.Offset(0, 12).Formula = "omakaavasi tähän"
        End If
        End If
        End Sub

        Keep EXCELing
        @Kunde


    • Vilel 59

      eikös tuohon tarvittaisi vielä jonkinnäköinen kaava N-sarakkeen kohdalle viitaten moduulin....

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

    Luetuimmat keskustelut

    1. Anna minulle anteeksi

      Anna minulle anteeksi. Minä pyydän.
      Ikävä
      164
      2177
    2. Kun viimeksi kohtasitte/näitte

      Mitä olitte tekemässä? Millainen ympäristö oli? Löydetään toisemme...
      Ikävä
      136
      1855
    3. Olet kyllä vaarallisen himokas

      Luova, kaunis, määrätietoinen, pervo, mielenkiintoinen, kovanaama, naisellinen ja erikoinen.
      Ikävä
      102
      1617
    4. Mikä on hän on ammatiltaan?

      Vai tiedätkö mitä kaivattusi tekee työkseen?
      Ikävä
      72
      1300
    5. Anna vielä vähän vihreää valoa

      Teen sitten siirtoni, nainen. Tiedän, että olet jo varovaisesti yrittänyt lähestyä, mutta siitä on jo aikaa. Jos tunnet
      Ikävä
      21
      1297
    6. Mitä ajattelit silloin kun

      Löysit hänet?
      Ikävä
      71
      1254
    7. Syksyinen aamuketju suden

      Hyvää huomenta ja kaunista syyspäivää. 🌞🍁🍂☕
      Ikävä
      234
      1071
    8. Oletko tutustunut muihin

      Samalla tavalla kuin häneen?
      Ikävä
      72
      853
    9. Uskotko että kohdataan vielä?

      Kysymys otsikossa, aloitukseen ei muuta lisättävää.
      Ikävä
      45
      770
    10. Miksi homous puhuttaa konservatiiveja vuodesta toiseen?

      Kysymykseen on vastattukin Kansanlähetyksen osalta: "Miksi sukupuoleen ja seksuaalisuuteen liittyvät asiat ovat konserv
      Luterilaisuus
      199
      764
    Aihe