Gå til innhold

Anbefalte innlegg

Skrevet

Hei

 

Jeg har en tabell i excel med celler som har forskjellige bakgrunnsfarger og tekstfarger.

Jeg ønsker å summere disse tallene f.eks bare de som har sort skrift og grønn bakgrunnsfarge.

 

Noen som vet om det finnes en funksjon eller en vba-kode som gjør at jeg kan få dette til?

Videoannonse
Annonse
Skrevet

Hei

 

Excel kan ikke dette. Du må skrive din egen regnearkfunksjon for å få det til. Moro.

 

Åpne VB-editoren (Alt F11 eller lignende). Meny Insert > Module. I modulen limer du inn dette:

 

Public Function Fargesum(Celleområde As Range, _
   SammeFargeSom As Range) As Double
Dim Rng As Range, Cel As Range
Dim Bcolr As Long, Fcolr As Long
Application.Volatile
On Error Resume Next
Set Rng = Intersect(Celleområde, Celleområde.Parent.UsedRange)
If Rng Is Nothing Then Exit Function
Bcolr = SammeFargeSom(1).Interior.Color
Fcolr = SammeFargeSom(1).Font.Color
For Each Cel In Rng
   If Cel.Interior.Color = Bcolr Then
       If Cel.Font.Color = Fcolr Then _
           Fargesum = Fargesum + Cel.Value
   End If
Next
End Function

 

Lukk VB-editoren. Nå har du fått en ny regnearkfunksjon i denne filen. Den skal ha to inputs: celleområde som skal summeres, og en celle den skal sammenlikne farger med. I en celle skriver du f.eks

=Fargesum(A2:W100;F5)

så får du summen av cellene i området A2:W100 som har samme bakgrunnsfarge og tekstfarge som celle F5.

 

Merk at fargelegging ikke trigger beregning i Excel, du må trykke F9 etter en fargeendring for å få et nytt resultat.

 

HTH. Beste hilsen Harald

  • Liker 1
  • 2 uker senere...
Skrevet

Nå har jeg et annet spørsmål: Jeg skal lage en logg, hvor jeg ønsker at det skal være slik at jeg har en makro som heter f.eks. "ny linje". Den må gjøre slik at når du kjører den, setter den inn en ny linje, og i den første cellen, setter den inn dagens dato og klokkeslett.

Går det an?

Skrevet

Det går fint.

Denne setter inn over aktiv celle.

 

Sub NyLinje()
Dim Radnr As Long
Radnr = ActiveCell.Row
Rows(Radnr).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(Radnr, 1).Value = Now
End Sub

Hvis du skal ha den på fast plass, f.eks rad 12, så endrere du koden til

Radnr = 12

 

HTH. Beste hilsen Harald

Skrevet

Tusen takk for hjelpen.

Det er til stor nytte.

 

Har et siste spørsmål:

 

Går det an å få makroen til legge inn et nummer som øker med 1, hver gang den legger inn en ny linje. Litt vanskelig å forklare.

 

F.eks. Jeg kjører makroen NyLinje, den legger da inn en rad med linjenr i første celle og dato/tid i andre celle på den nye raden.

Skrevet

Du risikerer noe som blir seende slik ut

1
2
3
16
17
4

er det ønskelig?

Jeg tror jeg ville latt innholdet i arket bestemme det nye tallet, ikke makrohukommelsen, den forsvinner når du lukker Excel. Er største tallet i A-kolonnen pluss 1 et greitt nytt tall?

Skrevet

Hørtes riktig ut med største tallet i A-kolonnen, ja.

Beklager at jeg svarte litt seint, men var opptatt i møte.

Skrevet

Sub NyLinje()
Dim Radnr As Long
Radnr = ActiveCell.Row + 1
Rows(Radnr).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(Radnr, 1).Value = Application.WorksheetFunction.Max(Range("A:A")) + 1
Cells(Radnr, 2).Value = Now
End Sub

 

HTH. Beste hilsen Harald

Skrevet

Takker

 

En annen ting, hvordan får jeg til at excel setter inn dagens dato, når regnearket blir opprettet, og at denne ikke endres senere?

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...