Avatar billede tvc Seniormester
22. oktober 2007 - 19:54 Der er 8 kommentarer og
1 løsning

Sum.hvis over flere ark

Hej

Jeg har brug for en løsning der kan gøre at sum.hvis funktionen kan anvendes over flere ark, som man kan ved sum-funktionen.

Jeg har et I alt ark og et slut ark. Jeg vil gerne kunne summere tal i kolonne C i ark1 til ark slut såfremt der i arkets kolonne A står en bestemt dato (angivet i i alt arkets kolonne A).

Med en almindelig sum ser funktionen således ud =SUM(Ark1:Slut!C3) og det er denne jeg gerne ville kunne erstatte af noget i atil med =SUM.HVIS('Ark1:Slut'!A:A;'I alt'!A2;'Ark1:Slut'!C:C) men denne funktion virker ikke over flere ark.

Er der en der har en løsning?
Avatar billede excelent Ekspert
22. oktober 2007 - 20:41 #1
Blir nok nødt til at ty til en UDF
Indsæt i et alm modul
I arket skriver du :  =sumArk(2) hvis det er række 2 du summerer
eller du kan skrive : =sumArk(række(2:2))  så kan du kopiere formlen til flere celler med fyldhåndtag

Function sumArk(rk)
Application.Volatile
For Each sh In ActiveWorkbook.Sheets
If sh.Name <> "Ialt" Then
If sh.Cells(rk, 1) = Sheets("Ialt").Cells(rk, 1) Then
x = x + sh.Cells(rk, 3)
End If
End If
Next
sumArk = x
End Function
Avatar billede excelent Ekspert
22. oktober 2007 - 20:48 #2
Det ser ud til dir ialt ark er med mellemrum "I alt"

ret arknavn til Ialt
eller
ret i koden Ialt til I alt
Avatar billede tvc Seniormester
22. oktober 2007 - 21:01 #3
Jeg kan ikke få den til at summere alle tal i kolonne C hvis der står en bestemt dato i den samme rækkes kolonne A. Jeg vil gerne have funktionen til at virke som =sum.hvis(A:A;A5;E:E) gør på et ark men bare over flere ark. Det kan jeg ikke få ovenstående funktion til at gøre - gør jeg noget forkert?
Avatar billede excelent Ekspert
22. oktober 2007 - 21:35 #4
Den skal altså summere alle tal i kolonne C i alle ark
hvis ellers dato i kolonne A er lig dato i I alt arket ?

kikker på sagen
Avatar billede tvc Seniormester
22. oktober 2007 - 21:49 #5
Lige præcis ;-)
Avatar billede excelent Ekspert
22. oktober 2007 - 21:55 #6
Prøv denne, (rk) er rækkenummer på den dato i Ialt arket der sammenlignes med (er lidt i tvivl om det er ret forstået)

Function sumArk(rk)
Application.Volatile
x = 0
For Each sh In ActiveWorkbook.Sheets
If sh.Name <> "Ialt" Then
For t = 1 To sh.Cells(65500, 1).End(xlUp).Row
If IsDate(Sheets("Ialt").Cells(rk, 1)) And sh.Cells(t, 1) = Sheets("Ialt").Cells(rk, 1) Then
x = x + sh.Cells(t, 3)
End If
Next
End If
Next
sumArk = x
End Function
Avatar billede tvc Seniormester
22. oktober 2007 - 22:31 #7
Jeg tror det virker - tester lige færdig i morgen - tak for hjælper.

Lægger du et svar?
Avatar billede excelent Ekspert
22. oktober 2007 - 22:50 #8
ok, ellers siger du bare til
Avatar billede tvc Seniormester
23. oktober 2007 - 21:38 #9
Det virker perfekt!

Tak
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