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
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!