27. januar 2011 - 20:31Der er
6 kommentarer og 1 løsning
Ikonsæt i betinget formatering - Relative referancer
Hej Igen
Har tidliger skrevet en tråd men fik aldrig løst problemet, så nu prøver jeg igen.
Jeg har til privaten lavet et budget og et regnskabsskema i sammen excel ark.
Mit problem er, at når jeg har oprettet en regel i en celle så kan jeg ikke kopier det til resten af arket. Den skriver at man ikke kan lave relative referencer i betinget formatering.
Jeg ønsker bruge et ikonsæt til at vise om cellens værdi er blevet større eller mindre end budgetteret. eksempel:
Celle B4 er formateret som følgende: rød pil: når værdien i cellen er > $B$72 gul pil: når værdien i cellen er = $B$72 grøn pil: når værdien i cellen er < $B$72
Denne formatering ønsker jeg at kopier til dele af arket med formatpenslen. Men det kan Excel ikke. For celle C4 skal den sammenligne med celle C72, men den låser sig fast til celle B4 og B72.
Her er et eksempel på hvilke celler der skal samlignes
(B4 samlignes med B72) (C4 med C72) (D4 med D72).....(M4 med M72) (B5 samlignes med B73) (C5 med C73) (D5 med D73).....(M5 med M73) etc. etc. etc. etc. (B58 samlignes med B127) (C58 med C127) (D58 med D127).....(M58 med M127)
Er der nogen der kender en smutvej, en makro eller er der kun den hårde måde og oprette en regel for hver eneste celle?
Ville gerne give 1500 point men maks er desværre 200
Så vidt jeg kan se skal du blot fjerne dollar tegnene i den betingende formattering. Altså: rød pil: når værdien i cellen er > B72 gul pil: når værdien i cellen er = B72 grøn pil: når værdien i cellen er < B72
Bemærk du lige skal rette "Sheet1" til hvad dit ark nu hedder. Og jeg har antaget at det er en fejl at du skriver at række 58 skal sammenlignes med 127 - det bør umiddelbart være 126 (så der er 68 rækker i mellem rækken med formatteringen og den række der sammenlignes med).
Public Sub SetIconSet() Dim cfIconSet As IconSetCondition Dim rn As Range
Dim startRow As Integer Dim startCol As Integer Dim endRow As Integer Dim endCol As Integer
Dim row As Integer Dim col As Integer
Dim compareRowoffset As Integer Dim compareRef As String
startRow = 4 endRow = 58 startCol = 2 ' B endCol = 13 ' M
compareRowoffset = 68
For row = startRow To endRow For col = startCol To endCol Set rn = Worksheets("Sheet1").Cells(row, col) compareRef = "=" & rn.Offset(compareRowoffset, 0).Address
rn.FormatConditions.Delete
Set cfIconSet = rn.FormatConditions.AddIconSetCondition cfIconSet.IconSet = ActiveWorkbook.IconSets(xl3Arrows) cfIconSet.ReverseOrder = True With cfIconSet.IconCriteria(3) .Type = xlConditionValueNumber .Value = compareRef .Operator = xlGreater End With
With cfIconSet.IconCriteria(2) .Type = xlConditionValueNumber .Value = compareRef .Operator = xlGreaterEqual End With
Jeg mener nu godt at du kan bruge Jens48s løsning. Du skal bare lave den formatering i den første celle, og så kopiere den ud....det har jeg prøvet, og det virkede i excel 2003 anyway.
Glad for at kunne hjælpe :o) Du giver point, ved at acceptere dette svar.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.