Avatar billede tvc Seniormester
08. januar 2007 - 02:26 Der er 3 kommentarer og
1 løsning

Sumfunktion med flere opslag og sum over flere ark - tillæg

Dette spørgsmål er et tillæg til http://www.eksperten.dk/spm/754234

Når mit første afdelingsark ikke indeholder FraMåned og FraÅr opstår der en fejl og funktionen vil ikke summerer de efterfølgende måneder og afdelinger.

Hvis jeg eksempelvis har en afdeling 1 med månedstal startende fra Jan (Januar) og lægger det ark som det første efter mit sumark virker det fint hav blot de efterfølgende afdelingsark starter med månedstal fra Jan eller senere.

Hvis jeg lægger et afdelingsark med månedstal startende Mar (Marts) som det første efter mit sumark og de efterfølgende afdelingsark starter Jan (januar) kan jeg ikke vælge en fra måned og år der ligger før Mar (Marts).

Er der en der kan løse problemet?

Funktionen ser således ud:

Function TSum(Konto, FraMåned, FraÅr, TilMåned, TilÅr)
Application.Volatile
Dim ws, t, Drk, Krk, FraKol, TilKol, ArkSum


For ws = 2 To Sheets.Count

For t = 1 To Sheets(ws).Cells(65500, 1).End(xlUp).Row
If Sheets(ws).Cells(t, 1) = "Month name" Then Drk = t: Exit For
Next

For t = 1 To Sheets(ws).Cells(65500, 1).End(xlUp).Row
If Sheets(ws).Cells(t, 1) = Konto Then Krk = t: Exit For
Next

For t = 3 To Sheets(ws).Cells(Drk, 256).End(xlToLeft).Column
If Left(Sheets(ws).Cells(Drk, t), 3) = FraMåned And Right(Sheets(ws).Cells(Drk, t), 2) = FraÅr Then
FraKol = t: Exit For
FraKol = 3
End If
Next
'If FraKol = "" Then FraKol = 3

For t = 3 To Sheets(ws).Cells(Drk, 256).End(xlToLeft).Column
If Left(Sheets(ws).Cells(Drk, t), 3) = TilMåned And Right(Sheets(ws).Cells(Drk, t), 2) = TilÅr Then
TilKol = t: Exit For
End If
Next
If TilKol = "" Then TilKol = Sheets(ws).Cells(Drk, 256).End(xlToLeft).Column

If TilKol < 3 Then TilKol = 3
ArkSum = ArkSum + Application.Sum(Sheets(ws).Range(Chr(FraKol + 64) & Krk & ":" & Chr(TilKol + 64) & Krk))

Next
TSum = ArkSum

End Function
Avatar billede excelent Ekspert
08. januar 2007 - 06:13 #1
prøv:

Function TSum(Konto, FraMåned, FraÅr, TilMåned, TilÅr)
Application.Volatile
Dim ws, t, Drk, Krk, FraKol, TilKol, ArkSum

For ws = 2 To Sheets.Count

For t = 1 To Sheets(ws).Cells(65500, 1).End(xlUp).Row
If Sheets(ws).Cells(t, 1) = "Month name" Then Drk = t: Exit For
Next

For t = 1 To Sheets(ws).Cells(65500, 1).End(xlUp).Row
If Sheets(ws).Cells(t, 1) = Konto Then Krk = t: Exit For
Next

For t = 3 To Sheets(ws).Cells(Drk, 256).End(xlToLeft).Column
If Left(Sheets(ws).Cells(Drk, t), 3) = FraMåned And Right(Sheets(ws).Cells(Drk, t), 2) = FraÅr Then
FraKol = t: Exit For
'FraKol = 3
End If
Next
If FraKol = "" Then FraKol = 3

For t = 3 To Sheets(ws).Cells(Drk, 256).End(xlToLeft).Column
If Left(Sheets(ws).Cells(Drk, t), 3) = TilMåned And Right(Sheets(ws).Cells(Drk, t), 2) = TilÅr Then
TilKol = t: Exit For
End If
Next
If TilKol = "" Then TilKol = Sheets(ws).Cells(Drk, 256).End(xlToLeft).Column

If FraKol < 3 Then FraKol = 3
ArkSum = ArkSum + Application.Sum(Sheets(ws).Range(Chr(FraKol + 64) & Krk & ":" & Chr(TilKol + 64) & Krk))

Next
TSum = ArkSum

End Function
Avatar billede tvc Seniormester
08. januar 2007 - 10:02 #2
Det er meget mystisk. I den projektmappe jeg arbejder med virker ingen af ovenstående men i en "ren" projektmappe virker de begge.

Løsningen har nok ikke noget med funktionen at gøre.
Avatar billede tvc Seniormester
10. januar 2007 - 10:27 #3
Lægger du et svar excelent - så lukker vi dette spørgsmål?

Tak for hjælpen med det hele.

TVC
Avatar billede excelent Ekspert
10. januar 2007 - 13:24 #4
ok velbekom
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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