11. august 2010 - 10:43Der er
8 kommentarer og 1 løsning
Dynamisk sum over flere ark
Hej Eksperter!
Bruger excel 2003 sp3.
Jeg har et regneark med en masse ark i. jan10, feb10, mar10, apr10 osv.
Jeg skal så bruge summen af en bestemt celle over flere ark. Her bruger jeg lige nu funktionen: =(SUM(jan10:jul10!E44)).
Jeg har i mit excelark lavet en funktion der gør at jeg kan skrive =arknavn og så skriver den arknavnet ud. Dette vil jeg gøre i celle A1. Så i ark jul10 i celle A1 står der jul10. I ark aug10 i celle A1 står der aug10 osv...
Jeg vil have en funktion der i teorien virker som =(SUM(jan10:A1!E44)) eller for den sags skyld =(SUM(A1:A2!E44)). Denne funktion virker ikke, men jeg skal bruge en der har den tiltænkte virkning.
Jo den virker fint, men denne funktion skal være i hvert ark. Hver gang der kommer en ny måned laver jeg et nyt ark og kopierer det forrige.
Hvis funktionen hedder: =(SUM(jan10:jul10!E44)) skal jeg derfor gå ind og manuelt rette jul10 til f.eks. aug10 i alle de celler hvor jeg bruger denne funktion. Feltet hvor der i funktionen står jul10 er egentlig blot det aktuelle arknavn. Dette skulle gerne ændre sig automatisk.
Dette kunne jeg forestille mig kunne gøres ved at skrive =arknavn i celle A1 hvilket returnere det aktuelle arknavn. Så hvis jeg er i ark "jul10" ville funktionen være: =(SUM(jan10:a1!E44)),hvilket egentlig er det samme som =(SUM(jan10:jul10!E44)) men sådan kan man ikke gøre.
Til det med arknavnet: Jeg har defineret et navn (Indsæt --> Navn --> Definér) som hedder arknavn. Til dette har jeg koblet formlen =HØJRE(HENT.DOKUMENT(1);LÆNGDE(HENT.DOKUMENT(1))-FIND("]";HENT.DOKUMENT(1))).
Dvs. at når jeg skriver =arknavn i en celle så bliver resultatet navnet på det ark jeg er i. Dvs. jul10 hvis jeg er i arket jul10 osv.
Jeg har oprettet en kommandoknap og i dens click_hændelse har jeg skrevet følgende kode, som ved et klik, tæller alle værdier fra celle "E44" på alle ark sammen og efterfølgende skriver den samlede værdi til alle ark´s celle "A1" .... ?
Private Sub cmdTælSammen_Click() Dim ark As Object Dim arknavn As String Dim resultat As Variant
'tælle celleværdien fra celle "E44" sammen fra alle ark For Each ark In ActiveWorkbook.Sheets
'skriv resultat af celleværdierne i celle "A1" på alle ark For Each ark In ActiveWorkbook.Sheets
arknavn = ark.Name
Sheets(arknavn).Range("A1").Value = resultat
Next
End Sub
Hvis du ikke ønsker at opsummere ved hjælp af knappen ?? Skal vi så bare lige ha´ over i en hændelse i den aktive workbook, hvorfra den så bliver aktiveret.
Ups .... Sættenissen var stukket af med ordet: KODEN!
Her er den rigtige tekst: Hvis du ikke ønsker at opsummere ved hjælp af knappen ?? Skal vi så bare lige ha´ KODEN over i en hændelse i den aktive workbook, hvorfra den så bliver aktiveret.
Jeg skal bare have noget der ved hver ny måned(nyt ark) er et script/funktion/etc der automatisk opdaterer hvor jeg ikke skal ind i alle funktionerne og rette jul10 til aug10 eller måneden efter aug10 til sep10..
En amerikaner ved navn David Hager kom helt tilbage i 1999 med en metode som jeg gengiver herunder, oversat til dansk i nødvendigt omfang.
Opret en navngiven formel: Navn: shtPos Refererer til: =HENT.DOKUMENT(87)
Opret en navngiven formel: Navn: wsNames Refererer til: =HØJRE(HENT.PROJEKTMAPPE(1);LÆNGDE(HENT.PROJEKTMAPPE(1))-FIND("]";HENT.PROJEKTMAPPE(1)))
Opret en navngiven formel: Navn: shtName Refererer til: =INDEKS(wsNames;shtPos)
Opret en navngiven formel: Navn: RunningTotal Refererer til: =EVALUER("SUM(Jan10:"&shtName&"!A"&RÆKKE()&")")+NU()*0
Formlen returnerer summen for cellen i kolonne A for hvert ark fra og med ark Jan10 til det ark hvor formlen findes. Hvis for eksempel det aktive ark er Apr10 og formlen indtastes i B2 (som: =RunningTotal) vil det svare til formlen: Jan10:Apr10!A2.
Mange tak! Det var den rigtige løsning! Modificerede den lidt så den virkede nøjagtig men du gav skubbet i den rigtige retning, så post et svar så får du point.
Igen, mange tak!
MVH
Synes godt om
Slettet bruger
12. august 2010 - 13:21#9
OK Hans
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.