Forum » Programska oprema » kako v excelu avtomatsko obarvati celice
kako v excelu avtomatsko obarvati celice
dragana ::
Problem je sledeč. Imam stolpec z vrednostmi od 1 do 5(samo cela števila). Kakšno funkcijo naj uporabim, da mi bo vse celice v stolpcu s številko 5 obarvalo rdeče, one s številko 4 v oranžno, 3 v rumeno, 2 v zeleno in 1 v modro?
Še to. Vrednosti v stolpcu so že izračuni funkcije: =IF(AV9>0,8;1;IF(AV9>0,6;2;IF(AV9>0,4;3;IF(AV9>0,2;4;5))))
Še to. Vrednosti v stolpcu so že izračuni funkcije: =IF(AV9>0,8;1;IF(AV9>0,6;2;IF(AV9>0,4;3;IF(AV9>0,2;4;5))))
imagodei ::
Ni problema, še kdaj. Je užitek odgovarjat, če ni treba človeku cele procedure spisat, ampak je sposoben potem sam najti/zgooglati do konca.
- Hoc est qui sumus -
camalotz2 ::
Res je.
Še tole: če vrednost v polju AV9 (ki je naveden v formuli) nikoli ne preseže vrednosti 1, bi se morda lahko namesto zgornjih vgnezdenih pogojnih stavkov uporabilo naslednjo formulo:
=5-INT(AV9*5-0,01)
Še tole: če vrednost v polju AV9 (ki je naveden v formuli) nikoli ne preseže vrednosti 1, bi se morda lahko namesto zgornjih vgnezdenih pogojnih stavkov uporabilo naslednjo formulo:
=5-INT(AV9*5-0,01)
foofighter ::
Zdravo, tudi sam imam problem z barvanje celic, le da je moj malo bolj kompliciran:)
Imam tabelo števil ~ 10 stolpcev X 40 vrstic. Rad bi sestavil makro, ki bi v vsaki vrstici poiskal največja 3 števila in jih potem pobarval. Na netu sem uspel izbrskati kodo, ki približno ustreza mojemu problemu, jo malenkost priredil, ampak bi rabil še dodatno pomoč.
Sub Barvaj()
Dim arr(3)
For i = 1 To 3
arr(i) = WorksheetFunction.Large(Selection, i)
Next i
For i = 3 To 1 Step -1
Select Case i
Case 1
colorr = 27
Case 2
colorr = 15
Case 3
colorr = 53
End Select
Set findit = Selection.Find(what:=arr(i))
findit.Interior.ColorIndex = colorr
If WorksheetFunction.CountIf(Selection, arr(i)) > 1 Then
firstadd = findit.Address
Do
Set findit = Selection.Find(what:=arr(i), after:=Range(findit.Address))
findit.Interior.ColorIndex = colorr
Loop Until findit.Address = firstadd
End If
Next i
End Sub
Ta koda načeloma dela in pobarva 3 največja števila v določeni tabeli. Ampak bi moral ročno označevati vsako vrstico in klikati gumb pobarvaj za vsako vrstico posebej. Rad pa bi da je že vnaprej določeno od kje do kje je tabela s podatki, in da se program sam premika od 1. pa do zadnje vrstice in sproti označuje polja.
Problem pri zgornji kodi je tudi ta, da ne upošteva enakih števil. Če imam recimo vrednosti 5,5,4,3.
Bo petici označil z barvo za največje število, štirico z barvo za drugo največje število. Trojke pa ne bo označil, čeprav želim da bi jo označil z barvo za tretje mesto. Predvidevam da je to zaradi casov, pa me zanima katera rešitev bi bila za to bolj primerna.
Upam da mi kdo lahko pomaga:)
LP, Jan
Imam tabelo števil ~ 10 stolpcev X 40 vrstic. Rad bi sestavil makro, ki bi v vsaki vrstici poiskal največja 3 števila in jih potem pobarval. Na netu sem uspel izbrskati kodo, ki približno ustreza mojemu problemu, jo malenkost priredil, ampak bi rabil še dodatno pomoč.
Sub Barvaj()
Dim arr(3)
For i = 1 To 3
arr(i) = WorksheetFunction.Large(Selection, i)
Next i
For i = 3 To 1 Step -1
Select Case i
Case 1
colorr = 27
Case 2
colorr = 15
Case 3
colorr = 53
End Select
Set findit = Selection.Find(what:=arr(i))
findit.Interior.ColorIndex = colorr
If WorksheetFunction.CountIf(Selection, arr(i)) > 1 Then
firstadd = findit.Address
Do
Set findit = Selection.Find(what:=arr(i), after:=Range(findit.Address))
findit.Interior.ColorIndex = colorr
Loop Until findit.Address = firstadd
End If
Next i
End Sub
Ta koda načeloma dela in pobarva 3 največja števila v določeni tabeli. Ampak bi moral ročno označevati vsako vrstico in klikati gumb pobarvaj za vsako vrstico posebej. Rad pa bi da je že vnaprej določeno od kje do kje je tabela s podatki, in da se program sam premika od 1. pa do zadnje vrstice in sproti označuje polja.
Problem pri zgornji kodi je tudi ta, da ne upošteva enakih števil. Če imam recimo vrednosti 5,5,4,3.
Bo petici označil z barvo za največje število, štirico z barvo za drugo največje število. Trojke pa ne bo označil, čeprav želim da bi jo označil z barvo za tretje mesto. Predvidevam da je to zaradi casov, pa me zanima katera rešitev bi bila za to bolj primerna.
Upam da mi kdo lahko pomaga:)
LP, Jan
Zgodovina sprememb…
- spremenilo: foofighter ()
smetko ::
Poizkusi sledečo kodo:
Sub Barvaj() Dim arr(3) arr(0) = 0 Dim vrstica, stopnja, j As Integer For vrstica = 1 To 40 Sheets("List1").Activate ActiveSheet.Range(Cells(vrstica, 1), Cells(vrstica, 10)).Select arr(0) = 0 stopnja = 1 j = 1 Do arr(stopnja) = WorksheetFunction.Large(Selection, j) If arr(stopnja) <> arr(stopnja - 1) Then stopnja = stopnja + 1 End If j = j + 1 Loop While stopnja <= 3 And Selection.Columns.Count >= j For i = stopnja - 1 To 1 Step -1 Select Case i Case 1 colorr = 27 Case 2 colorr = 15 Case 3 colorr = 53 End Select Set findit = Selection.Find(what:=arr(i)) findit.Interior.ColorIndex = colorr If WorksheetFunction.CountIf(Selection, arr(i)) > 1 Then firstadd = findit.Address Do Set findit = Selection.Find(what:=arr(i), after:=Range(findit.Address)) findit.Interior.ColorIndex = colorr Loop Until findit.Address = firstadd End If Next i Next vrstica End Sub
No comment
Zgodovina sprememb…
- spremenilo: smetko ()
foofighter ::
V osnovi dela tako kot sem si zamislil. Bom pa najbrž rabil še nekaj časa da to prilagodim svojemu primeru. :)
Zaenkrat pa sem opazil 2 težavi. Podobno stvar bom uporabljal na isti tabeli tudi za navpično barvanje polj, tako da bi moral vključiti v kodo še da vsa ostala polja pobarva belo, saj mi drugače ostane barva v tistih poljih ki so bila obarvana vodoravno.
Napako pa mi javi tudi v primeru ko je toliko polj z enako vrednostjo da so vsa polja izenačena ali na 1. mestu, ali pa na prvih dveh in ni nobeno na 3. mestu.
Imaš še glede tega kakšno idejo?
Drugače pa hvala za to kodo. Že to mi je ogromno pomagalo.
Zaenkrat pa sem opazil 2 težavi. Podobno stvar bom uporabljal na isti tabeli tudi za navpično barvanje polj, tako da bi moral vključiti v kodo še da vsa ostala polja pobarva belo, saj mi drugače ostane barva v tistih poljih ki so bila obarvana vodoravno.
Napako pa mi javi tudi v primeru ko je toliko polj z enako vrednostjo da so vsa polja izenačena ali na 1. mestu, ali pa na prvih dveh in ni nobeno na 3. mestu.
Imaš še glede tega kakšno idejo?
Drugače pa hvala za to kodo. Že to mi je ogromno pomagalo.
smetko ::
za
ActiveSheet.Range(Cells(vrstica, 1), Cells(vrstica, 10)).Select
dodaj
Selection.Interior.Pattern = xlNone
Drugo napako sem že predhodno popravil. glej:
ActiveSheet.Range(Cells(vrstica, 1), Cells(vrstica, 10)).Select
dodaj
Selection.Interior.Pattern = xlNone
Drugo napako sem že predhodno popravil. glej:
Loop While stopnja <= 3 And Selection.Columns.Count >= j
No comment
foofighter ::
Super! Za navpično bom pa sam poskušal spremeniti to kodo. Če se mi kje zatakne pa vprašam.
Vidim da obvladaš te zadeve. Katero gradivo za učenje VB-a bi priporočil?
Najlepša hvala še enkrat.
LP, Jan
Vidim da obvladaš te zadeve. Katero gradivo za učenje VB-a bi priporočil?
Najlepša hvala še enkrat.
LP, Jan
smetko ::
Sam sem za učenje VBA uporabil različne vire na internetu. Tako da ti tu težko pomagam.
Je pa pri tem treba ločevati:
VBA (Visual Basic for Application) --> Vgrajen v word,excel,..
VBS(Visual Basic Script) --> skriptni jezik za windows.
VB (Visual Basic) --> Programski jezik za pisanje programov.
Je pa pri tem treba ločevati:
VBA (Visual Basic for Application) --> Vgrajen v word,excel,..
VBS(Visual Basic Script) --> skriptni jezik za windows.
VB (Visual Basic) --> Programski jezik za pisanje programov.
No comment
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | vba arrayOddelek: Programiranje | 923 (616) | Vazelin |
» | [Java - DN] Naključna številaOddelek: Šola | 1355 (884) | nyler |
» | [C] - Spreminjanje programa s pointerjiOddelek: Programiranje | 1174 (926) | DaMachk |
» | C++ fibonacciOddelek: Programiranje | 1102 (697) | lebdim |
» | [Excel] problem z makrojem, visual basic (strani: 1 2 )Oddelek: Programiranje | 5661 (5124) | steev |