Avatar billede ploughgaard Nybegynder
16. april 2003 - 10:07 Der 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

SumGrøn = vResult
End Function
Avatar billede sjap Praktikant
16. april 2003 - 10:12 #1
Du kan evt prøve med denne her:

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
Avatar billede sjap Praktikant
16. april 2003 - 10:14 #2
Skal måske lige tilføje at du med denne funktion skal pege på en celle, der har den farve du leder efter.
Avatar billede sjap Praktikant
16. april 2003 - 10:16 #3
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).
Avatar billede ploughgaard Nybegynder
16. april 2003 - 10:17 #4
superjap:

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.
Avatar billede sjap Praktikant
16. april 2003 - 10:57 #5
Det forstår jeg ikke.

Prøv at se i menuen Funktioner/Indstillinger under fanebladet beregning og sørg for at "Automatisk" er markeret.
Avatar billede ploughgaard Nybegynder
16. april 2003 - 11:02 #6
Beregning er slået til.

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 ?
Avatar billede sjap Praktikant
16. april 2003 - 11:04 #7
Nu har jeg forstået problemet :-)

Desværre så har jeg ikke lige nogen gode ideer til at løse problemet, men måske dukker der noget op senere (i mit eller i en andens hoved).
Avatar billede ploughgaard Nybegynder
16. april 2003 - 11:08 #8
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.

Du skal være velkommen med flere forslag.

Tak foreløbig
Avatar billede sjap Praktikant
16. april 2003 - 11:08 #9
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).
Avatar billede bak Forsker
16. april 2003 - 13:10 #10
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 :-)
Avatar billede ploughgaard Nybegynder
16. april 2003 - 13:19 #11
Bak, du har ret. Efter jeg ændrede dSum til fSum, så virkede formlen ved F9. Det er godt nok ikke automatisk, men det er tæt nok på.

superjap, giv et nyt svar så høster du points

Tak for hjælpen og god påske til jer begge
Avatar billede sjap Praktikant
16. april 2003 - 13:34 #12
Også god påske til jer begge :-)
Avatar billede sjap Praktikant
16. april 2003 - 13:37 #13
Mange tak. Skulle bak ikke også have haft en slat?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester