Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Excel VBA - uslovno farbanje redova

[es] :: Office :: Excel :: Excel VBA - uslovno farbanje redova

[ Pregleda: 1545 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Svako

Član broj: 163913
Poruke: 6
*.lal.in2p3.fr.



+1 Profil

icon Excel VBA - uslovno farbanje redova04.07.2013. u 11:25 - pre 143 meseci
Dobar dan,
pravim neku tabelu u kojoj zelim da uporedim karakteristike razlicitih stampaca. Sto se tice naslova, modeli stampaca su mi u prvom redu, a karakteristike u prvoj koloni. E sad, da bi lakse bilo uociti prednosti i mane svakog od modela, htio sam da u svakom redu (koji odgovara odredjenoj karakteristici) ofarbam celije na taj nacin da vrijednosti koje su pozitivne budu recimo zelene, a kako se ide ka losijim da budu recimo sve crvenije. Problem je u tome sto je za neke karakteristike bolje da je vrijdnost sto veca (na primjer koliko strana u minuti stampa, ili kolicina memorije), a za neke druge (na primjer potrosnja energije, ili vrijeme za koje izbaci prvu stranu) bolje je da je vrijednost sto manja. OK, mogu i da za te posljednje koristim inverznu vrijednost, pa da sve formatiram na isti nacin, ali umjesto toga, dodao sam kolonu u koju sam stavio jedinice i nule u zavisnosti od toga da li treba "ozeleniti" velike ili male vrijednosti.
Pokusao sam da napravim VB script, ali se nisam bas proslavio.
Evo mog neslavnog pokusaja:
Code:

Sub Formatiranje()
'
' Ako u prvoj koloni doticnog reda imam jedinicu, onda taj red formatiram na taj nacin da su mi vece vrijednosti u tom redu zelene, a iduci ka nizim vrijednostima u istom redu, celije postaju sve vise zute (ili crvene, ili stagod)
' Sa druge strane, ako u prvoj koloni doticnog reda imam nulu, onda hocu da mi formatiranje bude obrnuto; to jest da mi oboji u zeleno one celije u tom redu koje imaju niske vrijednosti, a u zuto (ili crveno) one koje imaju visoke vrijednosti

'
    Dim prvaCelija As Range
    Dim zadnjaCelija As Range
    Dim radniRed As Range
    Dim testCelija As Range
    Dim iter As Double
    
    
    
    
    For iter = 4 To 70
    
        Set prvaCelija = "C" & iter
        Set zadnjaCelija = "G" & iter
        Set radniRed = Range(prvaCelija, zadnjaCelija)
        Set testCelija = "A" & iter
        
        
        If testCelija.Value = 1 Then
            radniRed.Select
            Selection.FormatConditions.AddColorScale ColorScaleType:=2
            Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
            Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
                xlConditionValueLowestValue
            With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
                .Color = 10285055
                .TintAndShade = 0
            End With
            Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
                xlConditionValueHighestValue
            With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
                .Color = 8109667
                .TintAndShade = 0
            End With
            
        ElseIf testCelija.Value = 0 Then
                Selection.FormatConditions.AddColorScale ColorScaleType:=2
            Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
            Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
                xlConditionValueLowestValue
            With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
                .Color = 8109667
                .TintAndShade = 0
            End With
            Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
                xlConditionValueHighestValue
            With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
                .Color = 10285055
                .TintAndShade = 0
            End With
        End If
    Next iter
  
End Sub



Unaprijed hvala za bilo kakav savjet!
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2286
212.200.121.*

Sajt: www.gowi.rs


+112 Profil

icon Re: Excel VBA - uslovno farbanje redova04.07.2013. u 14:38 - pre 143 meseci
Ne znam odakle si ovo izvukao
Code:
Set prvaCelija = "C" & iter

Koristi se Range("C2").

Ustvari u tvom primeru prava i zadnja ćelija su višak. Dovoljno je dodeliti Set radniRed = Range("C" & iter & ":" & "G" & iter)

Druga greška ti je što se radniRed selektuje samo u grani = 1 a ne u grani kad je 0

U primeru je primer tabele sa kodom.
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Prikačeni fajlovi
 
Odgovor na temu

Svako

Član broj: 163913
Poruke: 6
*.lal.in2p3.fr.



+1 Profil

icon Re: Excel VBA - uslovno farbanje redova04.07.2013. u 15:46 - pre 143 meseci
Sjajno!
Da si mi blize, izljubio bih te :)
Ovako samo veliko H V A L A !
 
Odgovor na temu

[es] :: Office :: Excel :: Excel VBA - uslovno farbanje redova

[ Pregleda: 1545 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.