22. januar 2004 - 23:19Der er
18 kommentarer og 1 løsning
Kan man lave en formel der ændrer sig når der kommer nye ark?
Hej
Jeg er ved at lave noget statistik over nogle forskellige ting i Excel. Har lavet en forside hvor der skal stå en masse gennemsnitstal, og derefter en masse andre ark, hvor tallene indtastets. Problemet er så bar at hvis jeg har to ark, og sætter den til at tage gennemsnittet af det, så har jeg et problem når jeg efterfølgende tilføjer et tredje ark. Mit spørgsmål lyder således på om det kan lade sig gøre at lave en formel så hver gang man sætter nye ark en, så tar den fx A14 i de respektive ark og dividerer med antal ark der er ? Hvis ikke, er det så muligt(sikkert ik =)) at lave et lille program hvor man kan indtaste nogle tal, hvorefter man hver gang tilføjer nye tal så tar den gennemsnittet af det?
Function FindGennemsnit(ByVal CellePåAlleArk As Range) As Double Dim Værdi As Double, Sider As Integer, AD As String AD = CellePåAlleArk.Address Værdi = 0 Sider = 0 For Each ws In Worksheets If ws.Name <> "Data" Then ' hopper over hovedside Værdi = Værdi + Sheets(ws.Name).Range(AD).Value Sider = Sider + 1 End If Next FindGennemsnit = Værdi / Sider Application.Volatile End Function
hvis den ikke skal regne 0 værdier og tomme med, så
Function FindGennemsnit(ByVal CellePåAlleArk As Range) As Double Dim Værdi As Double, Sider As Integer, AD As String AD = CellePåAlleArk.Address Værdi = 0 Sider = 0 For Each ws In Worksheets If ws.Name <> "Data" Then ' hopper over hovedside If Sheets(ws.Name).Range(AD).Value <> 0 Then Værdi = Værdi + Sheets(ws.Name).Range(AD).Value Sider = Sider + 1 End If End If Next FindGennemsnit = Værdi / Sider Application.Volatile End Function
du skal nok bruge denne, de andre tjekker og andre mapper hvis du har flere åbne.
Function FindGennemsnit(ByVal CellePåAlleArk As Range) As Double Dim Værdi As Double, Sider As Integer, AD As String AD = CellePåAlleArk.Address Værdi = 0 Sider = 0 For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Data" Then ' hopper over hovedside If Sheets(ws.Name).Range(AD).Value <> 0 Then Værdi = Værdi + Sheets(ws.Name).Range(AD).Value Sider = Sider + 1 End If End If Next FindGennemsnit = Værdi / Sider Application.Volatile End Function
En mulighed er at indsætte de nye mellem de andet og det sidste ark og så bruge formlen =MIDDEL istedet (jeg går så ud fra at beregningerne ligger i 1. ark) Hvis jeg feks har 10 ark, hvor det 1. er til udregning vil min formel for gennemsnittet af alle A14 celler være =MIDDEL(Ark2:Ark10!A14) Dette dækker så alle ark der fysisk ligger mellem Ark2 og Ark10. Hvis du så indsætter nye ark, placeres de bare mellem Ark2 og Ark10
Du skal sætte det ind i et modul, i dit ark. Tryk ALT+F11 vælg indsæt modul
kopier Nedenstående derind.
Function FindGennemsnit(ByVal CellePåAlleArk As Range) As Double Dim Værdi As Double, Sider As Integer, AD As String AD = CellePåAlleArk.Address Værdi = 0 Sider = 0 For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Data" Then ' hopper over hovedside(rettes til din hovedside) If Sheets(ws.Name).Range(AD).Value <> 0 Then ' hopper over 0 og tomme værdier Værdi = Værdi + Sheets(ws.Name).Range(AD).Value Sider = Sider + 1 End If End If Next FindGennemsnit = Værdi / Sider Application.Volatile End Function
Husk at rette navnet "Data" til din hovedside luk på øverste X i højre side
Klik ind i den celle, på din hovedside hvor du vil have resultatat.
Application.Caller Cellen med formelen Application.Caller.Parent Arket med cellen med formlen Application.Caller.Parent.Parent Projektmappen med arket med cellen med formlen
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.