ERLANDSEN DATA CONSULTING Excel & VBA Tips   Information in English / Informasjon på engelsk

Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.

Klikk her for å gå til den oppdaterte informasjonen.

Summer verdier fra det forrige eller neste regnearket

Det er mulig å summere verdier fra et område i et annet regneark på denne måten:

=SUMMER(Ark1!A1:A100)
Denne formelen kan deretter kopieres til de andre arkene i arbeidsboken, men du må redigere arknavnet i formelen for hvert enkelt ark. Med de egendefinerte funksjonene nedenfor kan man skrive inn funksjonen en gang (f.eks. hvis man grupperer regnearkene først) og slippe den manuelle redigeringen av arknavnet i formelen:
Function SumPreviousSheet(InputRange As Range) As Double
' summerer verdiene i InputRange i det forrige regnearket
' returnerer 0 hvis funksjonen benyttes i det første regnearket
    Application.Volatile ' utelat denne setningen hvis den ikke er nødvendig
    SumPreviousSheet = 0
    On Error Resume Next
    SumPreviousSheet = Application.WorksheetFunction.Sum(InputRange.Parent.Previous.Range(InputRange.Address))
    On Error Goto 0
End Function

Function SumNextSheet(InputRange As Range) As Double
' summerer verdiene i InputRange i det neste regnearket
' returnerer 0 hvis funksjonen benyttes i det siste regnearket
    Application.Volatile ' utelat denne setningen hvis den ikke er nødvendig
    SumNextSheet = 0
    On Error Resume Next
    SumNextSheet = Application.WorksheetFunction.Sum(InputRange.Parent.Next.Range(InputRange.Address))
    On Error Goto 0
End Function

Det er også mulig å lage en egendefinert funksjon som summerer verdier i et annet regneark på denne måten:

Function SumOffsetSheet(InputRange As Range, Optional SheetOffset As Integer = 0)
    Application.Volatile
    SumOffsetSheet = 0
    On Error Resume Next
    SumOffsetSheet = _
        Application.WorksheetFunction.Sum(Worksheets(InputRange.Worksheet.Index + _
        SheetOffset).Range(InputRange.Address))
    On Error Goto 0
End Function

Eller man kan lage en egendefinert funksjon som summerer verdier i et annet regneark på denne måten:

Function SumIndexSheet(InputRange As Range, Optional SheetIndex As Integer = 0)
    Application.Volatile
    SumIndexSheet = 0
    If SheetIndex = 0 Then
        SumIndexSheet = Application.WorksheetFunction.Sum(InputRange)
    Else
        On Error Resume Next
        SumIndexSheet = _
            Application.WorksheetFunction.Sum(Worksheets(SheetIndex).Range(InputRange.Address))
        On Error Goto 0
    End If
End Function

Eksempler:
=SumPreviousSheet(A1:A100) vil summere verdiene i området A1:A100 i det forrige regnearket.
=SumNextSheet(A1:A100) vil summere verdiene i området A1:A100 i det neste regnearket.
=SumOffsetSheet(A1:A100,1) vil summere verdiene i området A1:A100 i det neste regnearket.
=SumOffsetSheet(A1:A100,-1) vil summere verdiene i området A1:A100 i det forrige regnearket.
=SumIndexSheet(A1:A100,2) vil summere verdiene i området A1:A100 i det andre regnearket.
=SumIndexSheet(A1:A100) vil summere verdiene i området A1:A100 i det aktive regnearket.

 

Dokumentet er sist oppdatert 1999-08-14 12:41:47      Utskriftsvennlig versjon

 

Erlandsen Data Consulting     http://www.erlandsendata.no/   
Excel & VBA Tips   Copyright ©1999-2017    Ole P. Erlandsen   All rights reserved
E-post kontaktadresse