16. april 2003 - 10:07Der er
12 kommentarer og 1 løsning
Betinget sumformel
Jeg har en formel, der summer data fra en range, baseret på den baggrundsfarve som cellen har.
Hvis man har et ark med følgende data (A1:A4), hvor * markeringen betyder at cellen er farvet grøn:
100 * 200 50 25 *
så får man følgende resultater med følgende formler:
125 = SumGrøn(A1:A4) 375 = Sum(A1:A4)
Mit problem er at jeg ikke kan få formlen (SumGrøn) til at reagere hvis en bruger farver en ny celle grøn, feks. cellen med tallet 50. Min SumGrøn opfatter ikke at den nu også skal tage denne celle med. Kun hvis tallet senere bliver rettet (til feks. 55) vil tallet blive regnet med ind i summen.
Det eneste der kan får cellen med SumGrøn til at ændre sig er ved at trykke på F2 og Enter. Ikke engang F9 får den korrekte sum frem.
Er der nogen der har en ide til hvordan man tvinger en rekalkulation af SumGrøn igennem, eller evt. har et andet bud på hvordan denne opgave kan løses?
Function SumGrøn(rSumRange As Range)
Dim rCell As Range Dim iCol As Integer Dim vResult
iCol = 4
For Each rCell In rSumRange If rCell.Interior.ColorIndex = iCol Then vResult = WorksheetFunction.Sum(rCell) + vResult End If Next rCell
Public Function SumHvisFarve(SumOmråde As Range, FarveCelle As Range) As Double Dim Celle As Range Dim fSum As Variant DSum = 0 Application.Volatile For Each Celle In SumOmråde If Celle.Interior.ColorIndex = FarveCelle.Interior.ColorIndex Then If IsNumeric(Celle) Then fSum = fSum + Celle.Value End If Next Celle SumHvisFarve = fSum End Function
Og så hører det sig også til at jeg lige gør opmærksom på, at det er noget kode som jeg har hugget fra bak (det har vist været oppe og vende i et tidligere spørgsmål).
Det er samme sag. Hvis jeg farvekode en celle der allerede indeholder et tal, så kommer den ikke med i summen, før tallet ændrer sig eller formelcellen redigeres.
Jeg tror problemet er at en farvekodning ikke "trigger" en genberegning af cellerne i regnearket.
Hvis en celle, der allerede indeholder et tal skrifter farver, så er det ikke nok til at få Excel til at genberegne, og som jeg skrev kan man heller ikke tvinge en beregning igennem med F9, da Excel ikke har opfattet at der er ændringer.
Mener du at dit regneark genberegner hvis du ændrer farven og ikke foretager dig andet ?
Den ide jeg selv sidder og pusler med går ud på at overvåge ændringer af arket og hvis en celle farves grøn, skal et evt. tal slettes og sættes ind på ny. På den måde sikrer jeg at tallet ændres efter at farver er skiftet og derved fungerer min formel. Men jeg tror ikke mine evner rækker så langt.
Problemet er, at du vil have beregningen til at starte efter at du har ændret et format. Det tror jeg ikke du kan, for jeg tror ikke der er nogen indbygget VedFormatÆndring-hændelse indbygget i programmet. Det betyder at der ikke er nogen mulighed for at registrere at det er sket (og dermed heller ikke for at starte beregningen).
Superjab har ret i at der "mangler" en hændelse, men hvis du bruges superjabs kode, vil Application.Volatile=True gøre at formlen genberegnes ved tryk på F9, altså skal du ikke redigere formlen først.
Jeg tror forøvrigt at linien dSum=0 skal ændres til fSum=0 :-)
Mange tak. Skulle bak ikke også have haft en slat?
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.