Avatar billede Martinbif Nybegynder
06. april 2011 - 17:04 Der er 13 kommentarer

Største sammenhængnde sum

Hej

Jeg er i den situation at jeg skal finde den største sum af 4 sammenhængende værdier. Dvs jeg har en række med mange værdier men også med mellemrum. Her skal jeg finde den største værdi af fire sammenhængende værdier?? Håber i kan hjælpe!

På forhånd tak!!
Avatar billede jens48 Ekspert
06. april 2011 - 17:14 #1
Antager værdierne står i kolonne A1:A100. I kolonne b1 skrives
=IF(COUNT(A1:A4)=4;SUM(A1:A4);). Denne kopieres til B1:B100
Og så kan du finde max med
=MAX(B1:B100)
Avatar billede Martinbif Nybegynder
06. april 2011 - 17:22 #2
Hej Jens

Tak for hurtigt svar. Men hvis der nu er mellemrum så får jeg jo ikke fire værdier. Fx hvis det ser såen her ud:

Række 1: 1 2 _ 2 _ _ 3 4 5 _ _ _ 8_4

Her vil summen af de fire største være 4+5+8+4 = 21.
Avatar billede tida Juniormester
07. april 2011 - 15:49 #3
Hvad med denne formel (forudsat at tallene står i række 1):

=+STØRSTE(A1:O1;1)+STØRSTE(A1:O1;2)+STØRSTE(A1:O1;3)+STØRSTE(A1:O1;4)
Avatar billede Martinbif Nybegynder
07. april 2011 - 18:43 #4
Tallene skal være sammenhængende. Fx

10_4_ _ 6_3_ _ _ 5 _ _ _4 _ _ 3

Her er den største sum 10+4+6+3 = 23

Måske det er lidt forkert formuleret før. Det skal være den største sum af fire sammenhængendeværdier i rækken.
Avatar billede jens48 Ekspert
07. april 2011 - 23:31 #5
Det skal nok laves med en makro. Prøv med nedenstående:
Sub Macro1()
Dim i As Integer 'række der opereres i
Dim j As Integer 'summerer de 4 celler
Dim k As Integer 'tæller ikke-tomme celler
Dim l As Integer 'tæller antal celler
Dim m As Integer 'Max
Dim n As Integer 'Nummer på kolonne data skal sættes ind i
n = 4
m = 0
j = 0
Lastrow = Cells(65356, 1).End(xlUp).Row
For i = 1 To Lastrow
For l = 0 To 100
j = j + Cells(i + l, 1)
k = k + 1
If Cells(i + l, 1) = 0 Then
k = k - 1
Else
If k = 4 Then
Cells(i, n) = j
If m > j Then
Else
m = j
End If
End If
End If
Next
j = 0
k = 0
Next
Cells(i + 3, n) = m
End Sub

Bemærk at n=4 forårsager at der bliver skrevet data ind i kolonne 4 (D). Der bør derfor ikke stå noget i den kolonne.
Avatar billede Martinbif Nybegynder
08. april 2011 - 08:23 #6
Super. Kan du et par tips til hvordan jeg opretter macroen? Det er et af mine svage punkter i excel :)

På forhånd tak! :)
Avatar billede Martinbif Nybegynder
08. april 2011 - 10:06 #7
Hej Jens det lykkedes sgu! :) Det ser ud til at virke perfekt! Men hvordan kan jeg ændre i macroen så jeg får flere kolloner med? :) Altså så jeg gentager den her i kollonne E og finder største sum der? :)

På forhånd tak!
Avatar billede Martinbif Nybegynder
08. april 2011 - 10:27 #8
Kom til at tænke på en ting til, kan jeg få macroen til at skrive et x i kollonne c ud for de 4 som udgår største sum? :)

PFT :)
Avatar billede jens48 Ekspert
08. april 2011 - 10:44 #9
Jeg kigger på det i aften
Avatar billede Martinbif Nybegynder
08. april 2011 - 11:50 #10
Super, jeg har nemlig op til 50 kollonner jeg skal gøre det i :)
Avatar billede jens48 Ekspert
08. april 2011 - 17:18 #11
Skriv lige i hvilke kolonner du har tallene og hvor du gerne vil have resultatet (i samme kolonne eller?). Hvor mange linier er der i kolonnerne?
Avatar billede Martinbif Nybegynder
08. april 2011 - 17:30 #12
Hej Jens

Jeg har mine tal i kolonne A så kommer summen i kolonne B også markeringen om det er en af de fire i kolonne c og sådan kører Den 50 gange. Dvs næste talrække kommer i kolonne D osv.

Jeg har 168 linjer med tal i hver tal kolonne :)

Tak!
Avatar billede jens48 Ekspert
09. april 2011 - 01:20 #13
Makroen checker hver 3. kolonne, og skriver i den efterfølgende kolonne summen af de 4 næste tal. I 3. kolonne bliver der indsat et 1-tal ved det første af de 4 største tal. Kolonne 2 og 3 slettes i begyndelsen af makroen. Håber det kan bruges.


Sub Macro1()
Dim i As Integer 'række der opereres i
Dim j As Long 'summerer de 4 celler
Dim k As Integer 'tæller ikke-tomme celler
Dim l As Integer 'tæller antal celler
Dim m As Long 'Max
Dim n As Integer 'Nummer på kolonne data skal sættes ind i
Dim o As Integer 'Indikator for max. sum
For n = 2 To 149 Step 3
Columns(n).Select
    Selection.ClearContents
Next
For n = 3 To 150 Step 3
Columns(n).Select
    Selection.ClearContents
Next
For n = 2 To 149 Step 3
m = 0
j = 0
Lastrow = Cells(65356, n - 1).End(xlUp).Row
For i = 1 To Lastrow
For l = 0 To 100
j = j + Cells(i + l, n - 1)
k = k + 1
If Cells(i + l, n - 1) = 0 Then
k = k - 1
Else
If k = 4 Then
Cells(i, n) = j
If m > j Then

Else
m = j
o = i
End If
End If
End If
Next
j = 0
k = 0
Next
Cells(i + 3, n) = m
Cells(o, n + 1) = 1
Next
Range("A1").Select
End Sub
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