Avatar billede aheiss Praktikant
13. august 2003 - 17:04 Der er 4 kommentarer og
1 løsning

Sumprodukt over flere ark

Hvordan summerer jeg produktet af to celler over et variabelt antal ark. Lad os sige ark1 og ark2 indeholder værdier i celle a1 og a2.

En mulig simpel formel kunne her være :
=(+Ark1!A1*Ark1!A2)+(Ark2!A1*Ark2!A2)

Den er dog ikke særligt bevendt når antallet af ark nærmer sig 20, og i øvrigt er ukendt! Såfremt SUMPRODUKT kunne definere et område som én celle over flere ark kunne denne anvendes. Men det kan den vist ikke.

Jeg leder lidt efter en løsning hvor ark som skal summeres ligger til højre for et sumark (Resultatarket). Alle ark til og med eksempelvis ark X skal summeres på ovenstående måde)

Håber forklaringen er OK.
Avatar billede bak Forsker
13. august 2003 - 20:46 #1
Skal det altid være 2 celler der skal ganges ?
Skal det være ALLE ark til højre for eller ....
Avatar billede bak Forsker
13. august 2003 - 22:50 #2
Denne funktion kan bruges hvis det drejer sig om alle ark til højre for sumarket og hvis cellerne der skal multipliceres er i et sammenhængende område.
Bruges sådan:
=SumProdAll(A1:A2)
eller
=SumProdAll(A1:c4)


Function SumProdAll(rng)
  Dim Addr1 As String
  Dim Temp As Single
  Dim x As Long, y As Long
  Application.Volatile
  Addr1 = rng.Address
  'find placering af arket med formlen
  For x = 1 To Worksheets.Count
      If Application.Caller.Parent.Name = Worksheets(x).Name Then Exit For
  Next
  x = x + 1
  'For alle ark tilhøjre for (index > formelark)
  For y = x To Worksheets.Count
      'multiplicere og addere
      Temp = Temp + Application.WorksheetFunction.Product(Worksheets(y).Range(Addr1))
  Next
  SumProdAll = Temp
End Function
Avatar billede aheiss Praktikant
14. august 2003 - 11:07 #3
Tak skal du ha bak.
Du får dine 60 points, hvis jeg da kan finde ud af hvordan man overdrager dem.

Jeg måtte lave en mindre korrektion, idet det var ikke relaterede celler der skulle adderes, samt at summeringen skulle gælde til arket med Navn "X". Sidstnævnte løste jeg dog ved at dette ark altid er fjerde sidst. Ikke særligt elegant men det virker.

Funktionen ser du nedenfor. Du skal være velkommen til at forfine den - specielt hvis du ser at nogle fejlkilder kan opstå.

Ellers må du ha det godt  /hilsen aheiss
________________________________________________
Function SumProdAll(a, b)
  Dim AddrA As String
  Dim AddrB As String
    Dim Temp As Single
  Dim x As Long, y As Long
      Application.Volatile
      AddrA = a.Address
      AddrB = b.Address
  For x = 1 To Worksheets.Count - 3
      If Application.Caller.Parent.Name = Worksheets(x).Name Then Exit For
  Next
  x = x + 1    'For alle ark tilhøjre for (index > formelark)
  For y = x To Worksheets.Count - 3    'multiplicere og addere
      Temp = Temp + Sheets(y).Range(AddrA) * Sheets(y).Range(AddrB)
  Next
  SumProdAll = Temp
End Function
Avatar billede bak Forsker
14. august 2003 - 12:16 #4
En mindre forbedring.
Denne regner kun på de ark der ligger mellem sumarket og ark X.
Dette betyder at du skal angive navnet på Ark X i apostroffer.

=SumProdAll(A1;A2;"X")


Function SumProdAll(a As Range, b As Range, StopArk As String)
  Dim AddrA As String
  Dim AddrB As String
  Dim Temp As Single
  Dim x As Long, y As Long, s As Long, t As Long
  Application.Volatile
  AddrA = a.Address
  AddrB = b.Address
  For x = 1 To Worksheets.Count
      If Application.Caller.Parent.Name = Worksheets(x).Name Then s = x
      If Worksheets(x).Name = StopArk Then t = x
  Next
  For y = s + 1 To t - 1
      Temp = Temp + Sheets(y).Range(AddrA) * Sheets(y).Range(AddrB)
  Next
  SumProdAll = Temp
End Function
Avatar billede aheiss Praktikant
14. august 2003 - 12:36 #5
Perfekt.

Tak fra aheiss
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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