17. september 2006 - 20:51Der er
6 kommentarer og 1 løsning
VBA - sum over flere ark med anvendelse af LOpslag
Hej
Jeg har forsøgt at udarbejde en funktion som kan foretage summering over flere ark (månedsark) udfra en given betingelse (i stil med LOpslag).
Det er ikke lykkets mig at få den til at virke.
Er der en der kan hjælpe mig med opbygningen og løsningen af funktionen?
Beskrivelse af funktionen:
Der findes - et totalark (Total) og 12 månedsark (Jan, Feb, Mar, Apr, Maj, Jun, Jul, Aug, Sep, Okt, Nov, Dec)
Jeg ønsker at kunne angive et månedsnummer i en celle i Totalarket, hvorefter funktionen skal kunne summere tallene fra Ark Jan til og med den angivne måned.
Summeringen skal ske udfra en betingelse om at der i kolonne A i månedsarket skal stå den valgte Opslagsværdi.
Med angivelse af KolonneIndeks bestemmes hvilken kolonne sumdata skal hentes fra.
Function SumSpeciel(Opslagsværdi As String, SumArk As Range, Måned As String, KolonneIndeks As String)
Opslagsværdi - er den værdi som programmet skal søge efter i kolonne A i de underliggende ark (SumArk)
SumArk - er de ark som data skal summeres fra hvis Opslagsværdien findes i kolonne A
Måned - er den måned der skal summeres til (der summeres fra Januar og til den angivne måned)
Til alle andre kan jeg oplyse, at løsningen se således ud:
---------------------
Option Explicit
Function SumSpeciel(Opslagsværdi As String) Dim t, rk, ws, mySum, Fra, Til
Application.Volatile
Fra = 2: Til = Sheets("Total").Range("Month").Value + 1
For ws = Fra To Til For t = 1 To Sheets(ws).Range("A65000").End(xlUp).Row If Sheets(ws).Cells(t, 1).Value = Opslagsværdi Then mySum = mySum + Sheets(ws).Cells(t, 2) Next Next
glemte lige i farten - opslagskolonne - kunne se sådan ud:
Function SumSpeciel(Opslagsværdi As String,kol) Dim t, rk, ws, mySum, Fra, Til Application.Volatile Fra = 2: Til = Sheets("Total").Range("Month").Value + 1 For ws = Fra To Til For t = 1 To Sheets(ws).Range("A65000").End(xlUp).Row If Sheets(ws).Cells(t, 1).Value = Opslagsværdi Then mySum = mySum + Sheets(ws).Cells(t, kol) Next Next SumSpeciel = mySum End Function
så skal du blot markere box med mit navn og klikke accepter
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.